成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP中output buffering的原理及應(yīng)用

XUI / 784人閱讀

摘要:緩存過(guò)程在請(qǐng)求一個(gè)的過(guò)程中,實(shí)際上經(jīng)過(guò)三個(gè)緩存程序緩存緩存瀏覽器緩存開啟的兩個(gè)方法在配置這里去掉號(hào)即可在頁(yè)面中使用通過(guò)打開的,則作用于所有的頁(yè)面。

php緩存過(guò)程

在請(qǐng)求一個(gè)PHP的過(guò)程中,實(shí)際上經(jīng)過(guò)三個(gè)緩存:

程序緩存

ob緩存

瀏覽器緩存.

開啟ob的兩個(gè)方法
1.在php.ini 配置 ;output_buffering = 4096 這里去掉;號(hào)即可
2 在php頁(yè)面中使用 ob_start();

通過(guò)php.ini 打開的,則作用于所有的php頁(yè)面 。使用ob_start()打開則只作用于該頁(yè)面

ob緩存的知識(shí)點(diǎn)

在服務(wù)中,如果我們開啟了ob緩存,則echo數(shù)據(jù)首先放入到ob中

當(dāng)PHP頁(yè)面執(zhí)行到最后,則會(huì)把ob緩存的數(shù)據(jù)(如果有的話), 強(qiáng)制刷新到程序緩存,然后通過(guò)apache對(duì)數(shù)據(jù)封裝成http響應(yīng)包,返 回給瀏覽器

如果沒(méi)有ob,所有的數(shù)據(jù)直接放入程序緩存。 header信息不管你是否開啟ob,總是放入到程序緩存。

ob相關(guān)的函數(shù) ob_start($callback)
//在當(dāng)前頁(yè)面中開啟ob,注意callback
ob_start($callback);
ob_get_contents()
//獲取當(dāng)前ob緩存中的內(nèi)容
ob_get_contents()
ob_get_clean()
//獲取當(dāng)前ob緩存中的內(nèi)容,并且清空當(dāng)前的ob緩存
ob_get_clean()
ob_flush()
//將ob緩存中的內(nèi)容,刷到程序緩存中,但并沒(méi)有關(guān)閉ob緩存
ob_flush()
ob_end_flush()
//關(guān)閉ob緩存,并將數(shù)據(jù)刷回到程序緩存中
ob_end_flush()
ob_clean()
//將ob緩存中的內(nèi)容清空
ob_clean()
ob_end_clean()
//將ob緩存中的數(shù)據(jù)清空,并且關(guān)閉ob緩存
ob_end_clean()
注意ob_start($callback)的回調(diào)

應(yīng)用場(chǎng)景
在header()發(fā)送之前的報(bào)錯(cuò)
出錯(cuò)代碼

輸出:

Warning: Cannot modify header information - headers already sent by (output started at /Users/shuchao/Desktop/test.php:2) in /Users/shuchao/Desktop/test.php on line 3
解決辦法

在發(fā)送header前開啟ob,則所有的echo內(nèi)容都會(huì)到ob里面,從而解決錯(cuò)誤。


輸出

before_header
after_header

更多精彩,請(qǐng)關(guān)注公眾號(hào)“聊聊代碼”,讓我們一起聊聊“左手代碼右手詩(shī)”的事兒。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22096.html

相關(guān)文章

  • PHP基礎(chǔ)之輸出緩沖區(qū)基本概念、原理分析

    摘要:返回內(nèi)部緩沖區(qū)的內(nèi)容,關(guān)閉緩沖區(qū)。返回緩沖區(qū)的長(zhǎng)度,如果緩沖區(qū)未被激活,則返回。得到所有輸出緩沖區(qū)的狀態(tài)。使用輸出緩沖,可以將讀取的文件讀入緩沖區(qū),達(dá)到一定大小時(shí)傳送給用戶,再繼續(xù)讀取,實(shí)現(xiàn)分片的效果。 一、概念 在PHP運(yùn)行的過(guò)程中,可以將會(huì)產(chǎn)生輸出的函數(shù)或操作結(jié)果暫時(shí)保存在PHP的緩沖區(qū),只有當(dāng)緩沖區(qū)滿了、或者PHP運(yùn)行完畢、或者在必要時(shí)候進(jìn)行輸出,才會(huì)將數(shù)據(jù)輸出到瀏覽器,此緩沖數(shù)...

    harryhappy 評(píng)論0 收藏0
  • Node.js 度體驗(yàn)

    摘要:創(chuàng)建簡(jiǎn)單應(yīng)用使用指令來(lái)載入模塊創(chuàng)建服務(wù)器使用方法創(chuàng)建服務(wù)器,并使用方法綁定端口。全局安裝將安裝包放在下。的核心就是事件觸發(fā)與事件監(jiān)聽器功能的封裝。通常我們用于從一個(gè)流中獲取數(shù)據(jù)并將數(shù)據(jù)傳遞到另外一個(gè)流中。壓縮文件為文件壓縮完成。 創(chuàng)建簡(jiǎn)單應(yīng)用 使用 require 指令來(lái)載入 http 模塊 var http = require(http); 創(chuàng)建服務(wù)器 使用 http.create...

    CastlePeaK 評(píng)論0 收藏0
  • ob緩存機(jī)制(ob:output_buffer)

    摘要:我們要說(shuō)一下中的緩存大概有哪些在中,我們可以粗略的將緩存分為客戶端緩存緩存,服務(wù)器端緩存緩存。由于是基于架構(gòu)的,所有,我們可以理解為瀏覽器端的緩存,服務(wù)器端緩存。 ① 我們要說(shuō)一下php中的緩存大概有哪些! 在php中,我們可以粗略的將緩存分為客戶端緩存(Browser緩存),服務(wù)器端緩存(Server緩存)。由于php是基于b/s架構(gòu)的,所有,我們可以理解為瀏覽器端的緩存,服務(wù)器端...

    stormgens 評(píng)論0 收藏0
  • 淺析PHP輸出緩沖控制

    摘要:默認(rèn)為是一個(gè)回調(diào)函數(shù),將腳本的所有輸出,用所定義的函數(shù)進(jìn)行處理。在輸出緩沖區(qū)的回調(diào)函數(shù)中使用這些函數(shù),會(huì)導(dǎo)致未定義的錯(cuò)誤。 簡(jiǎn)介 PHP有輸出時(shí),可以用輸出控制函數(shù)來(lái)控制輸出 緩沖階段 ob_start(),將內(nèi)部緩沖區(qū)(buffer)打開。當(dāng)PHP遇到echo,printf等輸出語(yǔ)句時(shí), PHP就會(huì)將要輸出的數(shù)據(jù)放入緩沖區(qū)(buffer)中,等待輸出。而只有當(dāng)緩沖區(qū)滿了或者php運(yùn)行...

    wangjuntytl 評(píng)論0 收藏0
  • 【modernPHP專題(10)】理解output buffer

    摘要:磁盤高速緩存操作系統(tǒng)中使用磁盤高速緩存技術(shù)來(lái)提高磁盤的速度,對(duì)高速緩存復(fù)制的訪問(wèn)要比原始數(shù)據(jù)訪問(wèn)更為高效。因此,磁盤高速緩存在邏輯上屬于磁盤,物理上則是駐留在內(nèi)存中的盤塊。 1. 磁盤高速緩存(Disk Cache) 操作系統(tǒng)中使用磁盤高速緩存技術(shù)來(lái)提高磁盤的I/O速度,對(duì)高速緩存復(fù)制的訪問(wèn)要比原始數(shù)據(jù)訪問(wèn)更為高效。例如,正在運(yùn)行的進(jìn)程的指令既存儲(chǔ)在磁盤上,也存儲(chǔ)在物理內(nèi)存上,也被復(fù)...

    kelvinlee 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<