日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php不缓存直接输出,如何在PHP中禁用输出缓冲

發(fā)布時間:2023/12/31 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php不缓存直接输出,如何在PHP中禁用输出缓冲 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

做兩件事:

禁用用戶空間輸出緩沖區(qū),或者...

在全球范圍內(nèi),通過...

output_buffering在您的php.ini中關(guān)閉,或

output_buffering使用以下命令在Apache配置中關(guān)閉

php_flag "output_buffering" Off

或僅針對您關(guān)心的腳本,通過以下任一方式...

致電ob_end_flush(),或

呼喚 ob_end_clean()

另外,通過以下任一方法,盡可能禁用服務(wù)器級別的輸出緩沖區(qū):

ob_implicit_flush()在腳本的開頭調(diào)用,或者

flush()在每個echo將輸出添加到響應(yīng)主體的語句或其他語句之后調(diào)用

較長的版本

令人困惑的是,可能存在兩個相關(guān)的緩沖層,PHP文檔在區(qū)分這兩個方面做得很差。

輸出緩沖區(qū)

PHP文檔通常將第一層稱為“輸出緩沖區(qū)”。此緩沖層僅影響到HTTP響應(yīng)正文的輸出,而不影響標(biāo)頭。您可以使用打開緩沖輸出ob_start(),ob_end_flush()或者使用或?qū)⑵潢P(guān)閉ob_end_clean()。您還可以使用output_bufferingphp.ini中的選項(xiàng)使所有腳本自動從輸出緩沖開始。

對于生產(chǎn)版本的php.ini,此選項(xiàng)的默認(rèn)值為4096,這意味著將在輸出緩沖區(qū)中緩沖輸出的前4096個字節(jié),這時將對其進(jìn)行刷新并關(guān)閉輸出緩沖。

您可以通過在php.ini文件中將設(shè)置output_buffering為Off(或使用

php_flag "output_buffering" Off

如果您使用的是Apache,請在Apache配置中使用。或者,您可以通過調(diào)用ob_end_clean()或ob_end_flush()在腳本的開頭禁用單個腳本的功能。

寫緩沖區(qū)和Web服務(wù)器緩沖區(qū)

PHP手冊將輸出緩沖區(qū)之外的內(nèi)容稱為“寫緩沖區(qū)”,以及Web服務(wù)器具有的任何緩沖系統(tǒng)。如果您通過mod_php和結(jié)合使用PHP和Apache ,而沒有使用mod_gzip,則可以調(diào)用flush()來刷新它們;否則,您可以調(diào)用。與其他后端一樣,它也可能會起作用,盡管該手冊對提供保證不屑一顧:

描述

void flush ( void )

刷新PHP的寫緩沖區(qū)以及PHP使用的任何后端PHP(CGI,Web服務(wù)器等)。這會嘗試將當(dāng)前輸出一直推送到瀏覽器,但有一些警告。

flush()可能無法覆蓋Web服務(wù)器的緩沖方案,并且對瀏覽器中的任何客戶端緩沖都沒有影響。它也不會影響PHP的用戶空間輸出緩沖機(jī)制。這意味著,如果您正在使用ob_flush()和flush()來刷新ob輸出緩沖區(qū),則必須同時調(diào)用它們。

還有兩種方法可以使PHP flush()每次您進(jìn)行echo任何操作(或執(zhí)行將輸出回顯到響應(yīng)正文的任何其他操作)時自動調(diào)用。

首先是打電話ob_implicit_flush()。請注意,該函數(shù)被欺騙性命名。鑒于其ob_前綴,任何理智的人會認(rèn)為它會影響到“輸出緩沖”,因?yàn)檫@樣做ob_start,ob_flush但是,這種情況并非如此; ob_implicit_flush()像一樣flush(),會影響服務(wù)器級別的輸出緩沖區(qū),并且不會與其他ob_功能控制的輸出緩沖區(qū)發(fā)生任何交互。

第二種是通過在php.ini 中將implicit_flush標(biāo)志設(shè)置為來全局啟用隱式刷新On。這等效于ob_implicit_flush()在每個腳本的開頭進(jìn)行調(diào)用。請注意,本手冊以“嚴(yán)重的性能隱含性”為例,對此建議不多,我在與切向相關(guān)的答案中對此進(jìn)行了探討。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的php不缓存直接输出,如何在PHP中禁用输出缓冲的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。