第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在PHP中禁用輸出緩沖

如何在PHP中禁用輸出緩沖

PHP
拉風(fēng)的咖菲貓 2019-12-02 13:06:02
我編寫了一個(gè)簡(jiǎn)單的中繼腳本,該腳本連接到網(wǎng)絡(luò)攝像機(jī)并從套接字讀取數(shù)據(jù),并使用打印功能輸出此數(shù)據(jù)。數(shù)據(jù)是已設(shè)置邊界的MJPG數(shù)據(jù)。我只是輸出讀取的數(shù)據(jù)。問(wèn)題是PHP似乎正在緩沖這些數(shù)據(jù)。當(dāng)我將相機(jī)設(shè)置為1 FPS時(shí),F(xiàn)eed將凍結(jié)7-8秒,然后快速顯示8幀。如果將分辨率設(shè)置為很大,則相機(jī)每秒將以大約1幀的速度移動(dòng)。我假設(shè)那時(shí)正在發(fā)生一些緩沖(因?yàn)榇蟪叽绲木彌_區(qū)會(huì)很快填充,而小尺寸的緩沖區(qū)不會(huì)填充),而且我不知道如何禁用此緩沖。有人知道怎么做嗎?碼:ignore_user_abort(false);$boundary = "myboundary";//Set this so PHP doesn't timeout during a long streamset_time_limit(0);$socketConn = @fsockopen ("192.168.1.6", 1989, $errno, $errstr, 2);if (!$socketConn)exit();stream_set_timeout($socketConn, 10);fputs ($socketConn, "GET /mjpeg HTTP/1.0\r\n\r\n");//Setup Header Informationheader("Cache-Control: no-cache");header("Cache-Control: private");header("Pragma: no-cache");header("Content-type: multipart/x-mixed-replace; boundary=$boundary");@ini_set('implicit_flush', 1);for ($i = 0; $i < ob_get_level(); $i++)ob_end_flush();ob_implicit_flush(1);stream_set_blocking($f2, false);//Send data to clientwhile (connection_status() == CONNECTION_NORMAL){    $chunk = fread($socketConn, 128);    print $chunk;   }fclose($socketConn);
查看完整描述

3 回答

?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊

做兩件事:


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


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


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

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


php_flag "output_buffering" Off

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


致電ob_end_flush(),或

呼喚 ob_end_clean()

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


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

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

較長(zhǎng)的版本

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


輸出緩沖區(qū)

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


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


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


php_flag "output_buffering" Off

如果您使用的是Apache,請(qǐng)?jiān)贏pache配置中使用?;蛘?,您可以通過(guò)調(diào)用ob_end_clean()或ob_end_flush()在腳本的開(kāi)頭禁用單個(gè)腳本的功能。


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

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


描述

void flush ( void )

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


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


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


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


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


查看完整回答
反對(duì) 回復(fù) 2019-12-02
?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

除了禁用輸出緩沖外,您還可以flush()在每次讀取操作之后進(jìn)行調(diào)用。這避免了麻煩服務(wù)器配置,并使腳本更具可移植性。


查看完整回答
反對(duì) 回復(fù) 2019-12-02
?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊

輸出緩沖可以分層,在某些情況下,較早的代碼已達(dá)到多個(gè)級(jí)別。這將清除所有內(nèi)容。


while (ob_get_level()) ob_end_clean(); 

// or ob_end_flush() if you want the contents of the buffer.


查看完整回答
反對(duì) 回復(fù) 2019-12-02
  • 3 回答
  • 0 關(guān)注
  • 1107 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)