[英]PHP Cli Output after run
for($i = 0; $i < 5; $i++) {
echo $i . "\n";
sleep(1);
}
這是我運行的代碼。 而不是每秒顯示一個數字,PHP CLI決定等待並在執行所有操作后顯示
0
1
2
3
4
為什么會發生這種情況,我如何使其“實時”?
編輯 :發現了問題:因為我以某種方式緩沖了WP-Core(Wordpress)的輸出,如果我刪除了wp-core,一切都很好。 有關更多信息,當包含wp_core時,有一些wp通知正在單獨的文件中記錄。
您需要禁用輸出緩沖或刷新緩沖區。 您實際上只需要ob來處理通過HTTP發出的請求,因為它使您可以進行所有服務器端處理,而不必擔心與客戶端的連接。
for($i = 0; $i < 5; $i++) {
echo $i . "\n";
sleep(1);
flush();
ob_flush();
}
另外,如果您無法更改代碼,則可以在CLI php.ini中完全禁用輸出緩沖
output_buffering=Off
Servers
通常會緩沖服務器端腳本的輸出,直到其中有足夠的輸出來嘗試這樣的操作。 關閉輸出緩沖設置和手動刷新緩沖區的組合。 注意隱式flush
行以及flush和ob_flush
行。
for ($i = 0; $i < 5; $i++) {
echo $i . "</br>";
sleep(1);
flush();
ob_flush();
}
有關ob-flush
更多信息,請閱讀http://php.net/manual/zh/function.ob-flush.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.