簡體   English   中英

PHP GZip和服務器發送事件流

[英]PHP GZip and Server Sent Event Streams

我正在用PHP寫一個服務器發送的事件流,我收到錯誤:

“無法刷新緩沖區zlib輸出壓縮”

我相信這是因為嘗試刷新gzip壓縮輸出。

這是我的PHP代碼:

header ("Content-Type: text/event-stream\n\n");
header ("Cache-Control: no-cache");

echo "data: {$json}";
echo "\n\n";

ob_flush(); // ERROR HERE
flush();

我的問題是什么是最好的方法來實現這一點 - 理想情況下不會在apache中禁用gzip - 它可以在PHP中關閉嗎?

我嘗試了這個,但它不起作用:

if(ini_get('zlib.output_compression')){
    ini_set('zlib.output_compression', 'Off');
}

您不能沿ob_ output處理程序使用zlib輸出壓縮。 請參閱zlib.output_compression上的php文檔,它會多次聲明。

如果發現在php中啟用輸出壓縮的最簡單方法就是這樣做:

ini_set("zlib.output_compression", 1);
ini_set("zlib.output_compression_level", 9);

並且松開了所有的ob_ *東西。 現在,當客戶端請求帶有標題的頁面時:

Accept-Encoding: gzip, deflate

zlib會為你解壓縮你的響應主體,它會在響應中為你設置這個:

Content-Encoding: gzip

我花了幾個小時的時間來實現這一點,然后才意識到這兩條線是多么簡單。 並且根本不要使用任何沖洗

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM