Php

如何使用 nginx+PHP-FPM 啟用 PHP 的 flush()?

  • October 23, 2018

我正在使用帶有 PHP-FPM 的 nginx(安裝了 APC)。

我需要 PHPflush()才能工作。這可能嗎?

到目前為止我嘗試過的事情:

  • 禁用 中的所有輸出緩衝php.ini以及輸出壓縮。
  • gzip在 nginx 的配置中禁用。
  • 將 nginx 的fastcgi_*緩衝設置和設置fastcgi_max_temp_file_size為零。

我敢肯定我一定錯過了一些東西,因為我在這里和其他地方遇到過很多文章,人們聲稱他們已經讓它工作了,但我似乎沒有運氣。

可悲的是,使用 nginx 是不可能的。fastcgi 的 nginx 實現需要一個緩衝區,即使你將緩衝指令設置為 0,它只會導致它緩衝到磁碟而不是記憶體。

您必須找出一些替代系統,例如可以輪詢狀態的隊列。(例如想想 ala gearman)

**編輯:**這是可能的:http: //nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffering

我想要同樣的東西,結果證明這是可能的。在任何內容被回顯之前,您所需要的就是這個:

header('Content-Encoding: none;');

然後沖洗你做沖洗正常:

ob_end_flush();
flush();

Nginx 似乎接受了已關閉的編碼並且沒有 gzip。

引用自:https://serverfault.com/questions/488767