亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP基礎之輸出緩沖區基本概念、原理分析

2020-03-22 18:03:38
字體:
來源:轉載
供稿:網友

一、概念

在PHP運行的過程中,可以將會產生輸出的函數或操作結果暫時保存在PHP的緩沖區,只有當緩沖區滿了、或者PHP運行完畢、或者在必要時候進行輸出,才會將數據輸出到瀏覽器,此緩沖數據的區域稱為PHP的輸出緩沖區(OB)。

二、原理

①使用了緩沖區之后,當執行PHP的時候,如果碰到了echo、print_r之類的會輸出數據的代碼(實際上許多函數都會產生輸出),PHP就會將要輸出的數據放到PHP自身的緩沖區,等待輸出;

②當PHP自身的緩沖區接到指令,指示要輸出緩沖區的內容時,將會把緩沖區內的數據輸出到服務器上, 服務器接受到PHP輸出的數據,然后再把該數據存在到服務器自身的緩沖區內,等到輸出;

③當服務器接受到指令,只是要輸出緩沖區的內容時, 將會把緩沖區的內容輸出,返回到瀏覽器。

39945a244cf02dbaeb0be1ada305cd59.jpg上面可以看出,輸出緩沖區層不是唯一用于緩沖輸出的層,它實際上只是很多層中的一個。最后一點你要記住輸出緩沖區層的行為跟你使用的SAPI(web或cli)相關,不同的SAPI可能有不同的行為。

第一點概念有提到,緩沖區滿了會將緩沖數據輸出,這個跟SAPI有關,緩沖區主要是通過php.ini中的output_buffering變量控制。output_buffering的默認是on,默認值是4096(4kb)。

三、輸出緩沖區的配置

1、以我們通常使用的PHP-FPM這種SAPI為例,這里總結一下php的ini文件配置,主要為三個選項:

output_buffering
implicit_flush
output_handler

通過一個表格來理清一下這三個參數的含義:

600e7cad-350c-4585-900f-7d29c99d864c.jpg

注意,以上三個值不能在運行時使用ini_set()改這幾個選項的值。

2、關于PHP CLI方式執行時的配置,與FPM不太一樣,有幾點需要注意的是:

(1) output_buffering參數默認是不開啟的,

(2) implicit_flush參數默認被置為1(開啟)。

3、關于output_handler設置回調函數,可參考一下幾個常用設置:

①ob_gzhandler : 使用ext/zlib壓縮輸出;

②mb_output_handler : 使用ext/mbstring轉換字符編碼;

③ob_iconv_handler : 使用ext/iconv轉換字符編碼;

④ob_tidyhandler : 使用ext/tidy整理輸出的HTML文本;

⑤ob_[inflate/deflate]_handler : 使用ext/http壓縮輸出;

⑥ob_etaghandler : 使用ext/http自動生成HTTP的Etag;

四、輸出緩沖區相關方法

ob_start(); //打開一個輸出緩沖區,所有的輸出信息不再直接發送到下一層,而是保存在輸出緩沖區里面。
ob_clean(); //刪除內部緩沖區的內容,不關閉緩沖區(不輸出)。
ob_end_clean(); //刪除內部緩沖區的內容,關閉緩沖區(不輸出)。
ob_get_clean(); //返回內部緩沖區的內容,關閉緩沖區。
ob_flush(); //發送緩沖區內容到下一層,刪除緩沖區內容,不關閉緩沖區。
ob_end_flush(); //發送緩沖區內容到下一層,刪除緩沖區的內容,關閉緩沖區。
ob_get_flush(); //返回緩沖區的內容,并關閉緩沖區,再釋放緩沖區的內容。
ob_get_contents(); //返回緩沖區的內容,不輸出。
ob_get_length(); //返回緩沖區的長度,如果緩沖區未被激活,則返回FALSE。
ob_get_status() ; //得到所有輸出緩沖區的狀態。
ob_implicit_flush(); //打開/關閉絕對刷送。

五、輸出緩沖區的應用

1、在session、cookie、header等設置函數之前開啟:

最常見的就是在使用header函數之前,就已經輸出了某些數據,這樣會導致某些錯誤,例如 Cannot modify header information – headers already sent by;

出現這個錯誤的原因是, 在header之前已經輸出了某些數據,而輸出這些數據的同時, 服務器將會同時發送一個響應狀態到瀏覽器上(既然有輸出,即這個請求是有效的),而其后你又再次使用header函數

發送http頭,則會返回這個錯誤,錯誤的意思是:HTTP頭已經發送出去了,你不能對他再做修改。

因此可以在開頭先開啟ob_start方法。

2、控制PHP程序的下載功能:

通常很多人會用PHP實現文件下載,但是當一個文件大小過大(例如100M)時,如果先全部讀入內存再傳送給用戶,會導致響應時間大大加長(甚至超時),同時內存占用也會大大增加(甚至溢出)。

使用輸出緩沖,可以將讀取的文件讀入緩沖區,達到一定大小時傳送給用戶,再繼續讀取,實現分片的效果。這樣瀏覽器就可以持續地接受到數據,而不必等到所有文件讀取完畢,同時內存也不會占用太大。

3、作為靜態文件緩存:

將需要多次反復讀取,并且求改頻率很低的文件,第一次讀取時放入緩沖區,生成靜態文件,之后每次讀取可以直接返回而不需要進過php的處理(讀取數據庫等)。

更多PHP相關技術文章,請訪問PHP教程欄目進行學習!

以上就是PHP基礎之輸出緩沖區基本概念、原理分析的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人在线精品| 亚洲欧洲日产国产网站| 日韩精品福利网站| 欧美成人中文字幕在线| 97精品欧美一区二区三区| 7777精品久久久久久| 国自产精品手机在线观看视频| 中文字幕日韩欧美在线| 国产精品精品久久久| 亚洲片在线观看| 欧美性猛交视频| 国产亚洲成av人片在线观看桃| 亚洲国产成人爱av在线播放| 亚洲欧美日韩精品久久奇米色影视| 77777亚洲午夜久久多人| 热久久美女精品天天吊色| 国产精品激情av电影在线观看| 亚洲欧美中文另类| 欧美大片va欧美在线播放| 国产综合香蕉五月婷在线| 国产成人中文字幕| 精品性高朝久久久久久久| 91精品久久久久久久久中文字幕| 国产精品揄拍一区二区| 国产精品手机播放| 亚洲欧美日韩中文视频| 久久成人精品视频| 国产精品中文字幕在线| 国产丝袜视频一区| 亚洲区免费影片| 成人黄色影片在线| 91久久国产综合久久91精品网站| 欧美在线视频网站| 国产精品丝袜一区二区三区| 欧美日韩国产精品一区二区三区四区| 亚洲999一在线观看www| 欧美精品激情视频| 亚洲午夜精品久久久久久久久久久久| 欧美裸体视频网站| 亚洲欧美日韩一区二区三区在线| 国产一区二中文字幕在线看| 日韩欧美在线视频观看| 亚洲国产成人久久综合一区| 日韩av电影免费观看高清| 曰本色欧美视频在线| 国产美女高潮久久白浆| 久久这里有精品视频| 日韩美女av在线免费观看| 国内精久久久久久久久久人| 97超碰国产精品女人人人爽| 一个人看的www欧美| 亚洲精品资源美女情侣酒店| 日韩不卡在线观看| 精品一区二区亚洲| 性色av一区二区咪爱| 97香蕉久久超级碰碰高清版| 亚洲国产精彩中文乱码av| 日韩激情视频在线播放| 精品人伦一区二区三区蜜桃免费| 日韩视频免费在线| 欧美亚洲视频在线观看| 欧美色道久久88综合亚洲精品| 性欧美激情精品| 国内精品久久久久久久久| 亚洲高清不卡av| 成人午夜一级二级三级| 另类视频在线观看| 九色精品免费永久在线| 91精品国产自产在线| 亚洲人成网站999久久久综合| 亚洲无限av看| 97激碰免费视频| 91精品国产自产在线观看永久| 亚洲桃花岛网站| 国产精品成熟老女人| 久久噜噜噜精品国产亚洲综合| 国产第一区电影| 中文字幕视频在线免费欧美日韩综合在线看| 欧美激情欧美激情| 国产精品日韩av| 国产精品入口夜色视频大尺度| 日韩免费在线电影| 欧美黑人性猛交| 亚洲第一福利网站| 国产欧美日韩高清| 国内精品小视频在线观看| 亚洲精品一区二区在线| 国产在线视频欧美| 亚洲男人天堂九九视频| 中文字幕亚洲第一| 久久久久久久电影一区| 日韩欧美一区二区三区久久| 欧美天堂在线观看| 亚洲欧美国产精品| 国产精品人成电影在线观看| 成人免费视频97| 日韩视频在线观看免费| 亚洲欧洲在线播放| 久久亚洲国产精品成人av秋霞| 性色av一区二区咪爱| 成人写真视频福利网| 亚洲淫片在线视频| 国产丝袜视频一区| 136fldh精品导航福利| 国产综合色香蕉精品| 国模私拍视频一区| 成人情趣片在线观看免费| 久久精品国产成人| 国模精品视频一区二区三区| 成人www视频在线观看| 欧美成aaa人片在线观看蜜臀| 亚洲大胆人体av| 久久伊人色综合| 国产精品xxxxx| 亚洲人成在线一二| 久久91亚洲精品中文字幕| 欧美性xxxxx极品娇小| 中文字幕精品网| 国产亚洲精品久久久久久777| 国产日韩精品电影| 亚洲香蕉在线观看| 日韩第一页在线| 久久久黄色av| 亚洲一区二区三区四区在线播放| 欧美性xxxx在线播放| 欧美性生交大片免网| 91成人在线播放| 中文字幕9999| 日韩精品小视频| 欧美精品久久久久久久免费观看| 亚洲第一区在线| 国内精品久久久久久久| 国产主播精品在线| 欧美高清在线播放| 国产亚洲精品久久久久久牛牛| 色婷婷综合久久久久中文字幕1| 国产成人精彩在线视频九色| 国产免费亚洲高清| 深夜福利日韩在线看| 91精品国产成人www| 国产精品久久久久久婷婷天堂| 91精品国产自产在线老师啪| 欧美性生活大片免费观看网址| 欧美另类在线观看| 国产精品一久久香蕉国产线看观看| 精品视频在线导航| 欧美日韩人人澡狠狠躁视频| 国产精品一区=区| 日韩精品在线观看一区| 亚洲老板91色精品久久| 成人做爰www免费看视频网站| 日韩成人中文字幕在线观看| 国产精品久久久av久久久| 岛国av一区二区三区| 欧美日韩性视频| 欧美精品精品精品精品免费| 亚洲福利在线视频| 日韩精品视频免费专区在线播放| 亚洲精品v天堂中文字幕| 精品国产福利在线| 亚洲欧美日韩天堂| 伊人精品在线观看| 亚洲区在线播放| 日韩欧美大尺度|