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

首頁 > 編程 > PHP > 正文

PHP flush()與ob_flush()的區(qū)別詳解

2020-03-22 20:15:21
字體:
供稿:網(wǎng)友
buffer ---- flush()

buffer是一個內(nèi)存地址空間,html' target='_blank'>Linux系統(tǒng)默認(rèn)大小一般為4096(1kb),即一個內(nèi)存頁。主要用于存儲速度不同步的設(shè)備或者優(yōu)先級不同的 設(shè)備之間傳辦理數(shù)據(jù)的區(qū)域。通過buffer,可以使進(jìn)程這間的相互等待變少。這里說一個通俗一點(diǎn)的例子,你打開文本編輯器編輯一個文件的時候,你每輸入 一個字符,操作系統(tǒng)并不會立即把這個字符直接寫入到磁盤,而是先寫入到buffer,當(dāng)寫滿了一個buffer的時候,才會把buffer中的數(shù)據(jù)寫入磁 盤,當(dāng)然當(dāng)調(diào)用內(nèi)核函數(shù)flush()的時候,強(qiáng)制要求把buffer中的臟數(shù)據(jù)寫回磁盤。
同樣的道理,當(dāng)執(zhí)行echo,print的時候,輸出并沒有立即通過tcp傳給客戶端瀏覽器顯示, 而是將數(shù)據(jù)寫入php buffer。php output_buffering機(jī)制,意味在tcp buffer之前,建立了一新的隊(duì)列,數(shù)據(jù)必須經(jīng)過該隊(duì)列。當(dāng)一個php buffer寫滿的時候,腳本進(jìn)程會將php buffer中的輸出數(shù)據(jù)交給系統(tǒng)內(nèi)核交由tcp傳給瀏覽器顯示。所以,數(shù)據(jù)會依次寫到這幾個地方echo/pring - php buffer - tcp buffer - browser

php output_buffering --- ob_flush()

默認(rèn)情況下,php buffer是開啟的,而且該buffer默認(rèn)值是4096,即1kb。你可以通過在php.ini配置文件中找到output_buffering配置.當(dāng)echo,print等輸出用戶數(shù)據(jù)的時候,輸出數(shù)據(jù)都會寫入到php output_buffering中,直到output_buffering寫滿,會將這些數(shù)據(jù)通過tcp傳送給瀏覽器顯示。你也可以通過 ob_start()手動激活php output_buffering機(jī)制,使得即便輸出超過了1kb數(shù)據(jù),也不真的把數(shù)據(jù)交給tcp傳給瀏覽器,因?yàn)閛b_start()將php buffer空間設(shè)置到了足夠大 。只有直到腳本結(jié)束,或者調(diào)用ob_end_flush函數(shù),才會把數(shù)據(jù)發(fā)送給客戶端瀏覽器。

這兩個函數(shù)的使用怕是很多人最迷惑的一個問題,手冊上對兩個函數(shù)的解釋也語焉不詳,沒有明確的指出它們的區(qū)別,似乎二者的功能都是刷新輸出緩存。但在我們文章一開始的代碼中如果講fush()替換成ob_flush(),程序就再不能正確執(zhí)行了。顯然,它們是有區(qū)別的,否則也手冊中直接說明其中一個是另外一個函數(shù)的別名即可了,沒必要分別說明。那么它們的區(qū)別到底是什么呢?

在沒有開啟緩存時,腳本輸出的內(nèi)容都在服務(wù)器端處于等待輸出的狀態(tài) ,flush()可以將等待輸出的內(nèi)容立即發(fā)送到客戶端。開啟緩存后,腳本輸出的內(nèi)容存入了輸出緩存中 ,這時沒有處于等待輸出狀態(tài)的內(nèi)容,你直接使用flush()不會向客戶端發(fā)出任何內(nèi)容。而 ob_flush()的作用就是將本來存在輸出緩存中的內(nèi)容取出來,設(shè)置為等待輸出狀態(tài),但不會直接發(fā)送到客戶端 ,這時你就需要先使用 ob_flush()再使用flush(),客戶端才能立即獲得腳本的輸出。一.flush和ob_flush的正確順序,正確應(yīng)是,先ob_flush再flush,如下:
ob_flush();
flush();
如果Web服務(wù)器的操作系統(tǒng)是windows系統(tǒng),那順序顛倒或者不使用ob_flush()也不會出現(xiàn)問題。[有待求證 ] 但是在Linux系統(tǒng)上就無法刷新輸出緩沖。

output buffering函數(shù)
1.bool ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] )
激活output_buffering機(jī)制。一旦激活,腳本輸出不再直接出給瀏覽器,而是先暫時寫入php buffer內(nèi)存區(qū)域。
php默認(rèn)開啟output_buffering機(jī)制,只不過,通過調(diào)用ob_start()函數(shù)據(jù)output_buffering值擴(kuò)展到足夠 大 。也可以指定$chunk_size來指定output_buffering的值。$chunk_size默認(rèn)值是0,表示直到腳本運(yùn)行結(jié)束,php buffer中的數(shù)據(jù)才會發(fā)送到瀏覽器。如果你設(shè)置了$chunk_size的大小 ,則表示只要buffer中數(shù)據(jù)長度達(dá)到了該值,就會將buffer中 的數(shù)據(jù)發(fā)送給瀏覽器。
當(dāng)然,你可以通過指定$ouput_callback,來處理buffer中的數(shù)據(jù)。比如函數(shù)ob_gzhandler,將buffer中的數(shù)據(jù)壓縮后再傳送給瀏覽器。
第三個參數(shù):是否擦除緩存,可選,默認(rèn)是true,如果設(shè)置為false,則在腳本執(zhí)行結(jié)束前,緩存都不會被清除。
2.ob_get_contents
獲取一份php buffer中的數(shù)據(jù)拷貝。值得注意的是,你應(yīng)該在ob_end_clean()函數(shù)調(diào)用前調(diào)用該函數(shù),否則ob_get_contents()返回一個空字符中。

可以使用ob_get_contents()以字符串形式獲取服務(wù)端緩存的數(shù)據(jù),
使用ob_end_flush()則會輸出被緩存起來的數(shù)據(jù),并關(guān)閉緩存。
而使用ob_end_clean()則會靜默的清除服務(wù)端緩存的數(shù)據(jù),而不會有任何數(shù)據(jù)或其他行為。
服務(wù)端的緩存是堆疊起來的,也就是說你在開啟了ob_start()后,關(guān)閉之前,在其內(nèi)部還 可以開啟另外一個緩存ob_start()。

不過你也要務(wù)必保證關(guān)閉緩存的操作和開啟緩存的操作數(shù)量一樣多。
ob_start() 可以指定一個回調(diào)函數(shù)來處理緩存數(shù)據(jù),如果一個ob_start()內(nèi)部嵌套了另一個ob_start(),我們假定,外層的ob_start(),編號是A,內(nèi)層的ob_start()編號是B,它們各自制定了一個回調(diào)函數(shù)分別是functionA和functionB,那么在緩存B中的數(shù)據(jù)輸出時,它會先輩f(xié)uncitonB回調(diào)函數(shù)處理,再交給外層的functionA回調(diào)函數(shù)處理,之后才能輸出到客戶端。

另外,手冊說,對于某些web服務(wù)器,比如apache,在使用回調(diào)函數(shù)有可能會改變程序當(dāng)前的工作目錄,解決方法是在回調(diào)函數(shù)中自行手動把工作目錄修改回來,用chdir函數(shù),這點(diǎn)似乎不常遇到,遇到的時候記得去查手冊吧。

3.ob_end_flush與ob_end_clean
這二個函數(shù)有點(diǎn)相似,都會關(guān)閉ouptu_buffering機(jī)制。但不同的是,ob_end_flush只是把php buffer中的數(shù)據(jù)沖(flush/send)到客戶端瀏覽器,而ob_clean_clean將php bufeer中的數(shù)據(jù)清空(erase),但不發(fā)送給客戶端瀏覽器。

ob_end_flush調(diào)用之前 ,php buffer中的數(shù)據(jù)依然存在,ob_get_contents()依然可以獲取php buffer中的數(shù)據(jù)拷貝。而ob_end_flush()調(diào)用之后 ob_get_contents()取到的是空字符串,同時瀏覽器也接收不到輸出,即沒有任何輸出??梢允褂胦b_get_contents()以字符串形式獲取服務(wù)端緩存的數(shù)據(jù),使用ob_end_flush()則會輸出被緩存起來的數(shù)據(jù),并關(guān)閉緩存。
而使用ob_end_clean()則會靜默的清除服務(wù)端緩存的數(shù)據(jù),而不會有任何數(shù)據(jù)或其他行為。
服務(wù)端的緩存是堆疊起來的,也就是說你在開啟了ob_start()后,關(guān)閉之前,在其內(nèi)部還可以開啟另外一個緩存ob_start()。不過你也要務(wù)必保證關(guān)閉緩存的操作和開啟緩存的操作數(shù)量一樣多。
ob_start() 可以指定一個回調(diào)函數(shù)來處理緩存數(shù)據(jù),如果一個ob_start()內(nèi)部嵌套了另一個ob_start(),我們假定,外層的ob_start(),編號是A,內(nèi)層的ob_start()編號是B,它們各自制定了一個回調(diào)函數(shù)分別是functionA和functionB,那么在緩存B中的數(shù)據(jù)輸出時,它會先輩f(xié)uncitonB回調(diào)函數(shù)處理,再交給外層的functionA回調(diào)函數(shù)處理,之后才能輸出到客戶端。

另外,手冊說,對于某些web服務(wù)器,比如apache,在使用回調(diào)函數(shù)有可能會改變程序當(dāng)前的工作目錄,解決方法是在回調(diào)函數(shù)中自行手動把工作目錄修改回來,用chdir函數(shù),這點(diǎn)似乎不常遇到,遇到的時候記得去查手冊吧。PHP教程

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
成人性生活视频免费看| 欧美超级免费视 在线| eeuss影院www天堂免费| 国产精品视频久久久久久| 97中文在线观看| 天堂久久久久久| 高潮在线视频| 欧美aaa视频| 欧美日韩久久久久久| 亚洲黄色一区二区| 国产女主播自拍| 国产99午夜精品一区二区三区| 久久精品欧美日韩精品| avtt在线播放| 欧美日韩在线网站| 欧美精品二区三区四区免费看视频| 高清成人av| 国产999精品久久久久久| 99久久99久久精品国产片| 99视频精品全部免费在线视频| aa日韩免费精品视频一| 欧美一区亚洲| 六月丁香婷婷久久| a级片在线观看| 一卡二卡三卡在线| 国产免费美女视频| 亚洲一级电影| 亚洲五月六月丁香激情| 亚洲熟女乱色一区二区三区久久久| 欧美日韩一级二级三级| 欧洲美女少妇精品| 亚洲欧美在线看| 久久久精品在线观看| 懂色aⅴ精品一区二区三区蜜月| 亚洲精一区二区三区| 亚洲精品国产精品国产自| 麻豆传媒一区二区三区| 国产午夜大地久久| 久久综合九色综合97婷婷女人| 日韩在线观看免费全集电视剧网站| 中文字幕永久在线视频| 蜜臀av免费观看| 国产精品1区| 特级西西444| 久草在现在线| 美女免费黄视频网站| 国产成人av免费看| 又大又硬又爽免费视频| 91精品国产黑色紧身裤美女| 在线亚洲色图| 成人免费看片载| 日韩 国产 一区| 国产精品视频xxx| 久久6精品影院| 欧美性xxxx69| 精品日产卡一卡二卡麻豆| 亚洲在线免费播放| 色的视频在线观看免费播放| 成人精品小视频| 1769国产精品视频| 岛国毛片在线观看| 永久久久久久| 免费成人三级| 成人网页在线观看| 老司机精品视频网| 99久久婷婷国产综合精品青牛牛| 99精品中文字幕| 黑粗硬大欧美视频| 亚洲欧洲在线播放| 天堂在线观看一卡二卡三卡四卡| 日韩丰满少妇无码内射| 精品国产乱码久久久久久久软件| 欧美在线亚洲综合一区| 蜜臀久久久99精品久久久久久| 中文字幕第3页| 三级一区在线视频先锋| 成人性生交大片免费看网站| 亚洲欧美日韩综合精品网| 日本免费福利视频| 欧美久久久久中文字幕| 羞羞免费视频网站| 国产中文字幕精品| 日韩三区在线| 亚洲日本韩国在线| 国产日韩精品一区二区三区| 国产婷婷97碰碰久久人人蜜臀| 羞羞网www| 欧美情侣在线播放| 亚洲国产综合久久| 18黄暴禁片在线观看| 成人另类视频| 成人亚洲精品777777大片| re久久精品视频| 欧美极品在线观看| 国产在线视频一区| 成人免费在线看片| 在线观看中文字幕av| 日本精品一区二区三区在线| 精品日韩一区二区三区免费视频| 亚洲图片欧美激情| 国产色无码精品视频国产| 激情五月综合| 九色91porny| 日韩情涩欧美日韩视频| 又爽又黄的午夜网站| 久久青草精品视频免费观看| 久久久天堂国产精品| 成人18视频免费69| 久久这里只有精品8| 久久不见久久见免费视频7| 国产精品xxxx喷水欧美| 国产精品高潮久久| 欧美jizz19性欧美| 国产女片a归国片aa| 91国产精品电影| 在线观看免费亚洲| 超碰cao国产精品一区二区| 国产在线观看中文字幕| 中文字幕人妻一区| 亚洲国产高潮在线观看| 精品国精品国产自在久不卡| 国产伦视频一区二区三区| 日韩av在线一区| 日韩免费av片在线观看| 国产精品综合久久| 日韩亚洲欧美中文三级| 国产一区二区毛片| 婷婷久久综合九色综合伊人色| 亚洲国产精彩中文乱码av在线播放| 欧美性色黄大片人与善| 黄网站在线观看永久免费| 亚洲一区二区欧美激情| 欧美日韩一区二区欧美激情| 91视频观看视频| 尤物在线精品视频| 日韩在线视频播放| 在线播放国产一区中文字幕剧情欧美| 免费一级电影| 国产一级精品aaaaa看| 精品女人视频| 成年人一级黄色片| 久久99精品久久久久久秒播放器| 国产黄色片在线| 视频一区二区不卡| 91免费视频国产| 高清一区二区三区四区五区| 中文字幕在线视频一区二区| 亚洲精品一区二区| 91麻豆精品秘密入口| 欧美精品精品精品精品免费| 亚洲午夜免费福利视频| 中文字幕在线观看1| 国产三级在线免费观看| 久久精品五月| 嫩草精品影院| 免费看成人片| h免费在线观看| 国产热re99久久6国产精品| 亚洲国产精品国自产拍av秋霞| 日韩免费特黄一二三区| xxxxwwww欧美| 一区二区三区视频免费看| 久久久国产精品久久久| 肥女人的一级毛片| 国产日韩精品在线观看| 久久中文字幕在线| 欧美精品久久久久久久久老牛影院| 国产美女主播一区| 亚洲第一中文字幕| 五月天久久777| 91九色蝌蚪视频| 成人黄色一级视频| 精品中文一区| 国产精品成人久久久| 亚洲一区二区三区四区五区黄| 一个人看的www视频在线免费观看| 成人看片在线| 欧美成人精品激情在线观看| 成人啊v在线| 精品福利视频一区二区三区| 久草免费在线色站| 亚洲www啪成人一区二区| 91精品国产欧美一区二区| av免费在线网址| 诱受h嗯啊巨肉高潮| a一级免费视频| 日韩片欧美片| 亚洲午夜久久| 在线观看免费高清视频| 日韩成人网免费视频| 综合欧美国产视频二区| 精品国精品国产尤物美女| 亚洲福利视频网站| 亚洲欧美日韩中文字幕在线观看| 精品少妇久久久久久888优播| 无码精品视频一区二区三区| 九九热在线观看视频| 日本中文字幕在线播放| 亚洲先锋影音| 亚洲欧美精品中文字幕在线| 欧洲一区二区三区免费视频| 日韩精品最新在线观看| 日韩精品一区二区三区视频播放| 国产成人精品免费视频网站| 欧美a大片欧美片| 亚洲精品第二页| 爱福利一区二区| 亚洲精品国产精品国自产网站| 日韩免费av片| 欧美成人激情免费网| aaa在线观看| 777777国产7777777| 欧美.日韩.国产.一区.二区| 视频免费在线观看| 久久久久一本一区二区青青蜜月| 国产精品无码av在线播放| 国产精品久久久久久久久免费丝袜| 国产精品污www在线观看| 伊大人久久香线焦宗合一75大| 中文字幕一区二区三区手机版| 欧美不卡视频在线观看| 国产天堂在线播放视频| 不卡一区二区三区视频| 先锋影音av中文资源| 在线成人免费观看| 亚洲免费一级片| 国产精品丝袜久久久久久不卡| 日韩pacopacomama| 国产在线激情视频| 国产午夜精品一区二区三区嫩草| 欧美18—20岁hd第一次| 中文字幕乱码日本亚洲一区二区| 国产肉体ⅹxxx137大胆| 高清欧美精品xxxxx| 一级黄色录像毛片| 精品在线播放视频| 啊v视频在线一区二区三区| 在线免费观看污视频| 图片区乱熟图片区亚洲| 午夜精品福利一区二区蜜股av| 欧美激情在线免费| 久久亚洲精品一区二区| 蜜桃av久久久亚洲精品| 成人高清视频免费观看| 91麻豆精品国产自产在线| 日韩视频免费直播| 美腿丝袜亚洲综合| 欧美一区二区久久久| 久99久在线视频| 青草国产精品久久久久久| 久久大片网站| zjzjzjzjzj亚洲女人| 午夜18视频在线观看| 国产99久久久精品| 8x8x华人在线| 亚洲人成精品久久久| 91黑丝高跟在线| 中国大陆高清aⅴ毛片| 自拍偷拍亚洲综合| 成人免费大片黄在线播放| 亚洲www啪成人一区二区麻豆| av电影不卡在线观看| 免费人成年激情视频在线观看| 婷婷国产成人精品视频| 精品少妇一二三区| 人妻 日韩精品 中文字幕| 992tv在线观看| 久久久久亚洲av片无码下载蜜桃| 天天操天天摸天天干| 国产精品久久国产精麻豆99网站| 欧美日韩久久久| www.av视频在线观看| 国产高清在线| 久久99精品久久久野外观看| 羞羞视频在线观看欧美| www.中文字幕| 亚洲一区二区三区免费在线观看| 国产在线观看免费| 成人在线高清| 亚洲春色在线视频| 婷婷婷国产在线视频| 国产免费av在线| 国产一级片免费在线观看| 男人操女人免费软件| 日韩免费特黄一二三区| 一本色道久久99精品综合| av天堂一区二区| 免费久久久一本精品久久区| 在线观看h网| 日韩精选在线观看| 国产成人啪精品午夜在线观看| 国产精品视频一区二区在线观看| 久久人人爽人人人人片| 欧美性猛片xxxxx免费中国| 人人干人人插| 美女又黄又免费的视频| 国产精品家庭影院| 超碰aⅴ人人做人人爽欧美| 欧美va天堂在线| 91视频-88av| 欧美日韩性在线观看| 国产 日韩 欧美大片| 精品国产91亚洲一区二区三区婷婷| 天天干天天舔| bbbbbbbbbbb在线视频| 色天天久久综合婷婷女18| 欧美一区二区三区观看| 日韩欧美网站| 91在线视频国产| 国内精品美女在线观看| 久草手机在线观看| 国产免费av一区| 久久亚洲精品欧美| 欧美大片国产精品| 中文字幕不卡每日更新1区2区| 精品国产乱子伦一区二区| 亚洲综合网中心| 2021中文字幕一区亚洲| 国产超碰精品在线观看| 久久久99久久| 国产精东传媒成人av电影| 欧美久久综合性欧美| 中文字幕视频三区| 欧美日韩另类字幕中文| 国产在线播放一区| 国产精品三级av| 免费偷拍视频网站| 成人不卡免费视频|