簡體   English   中英

運行后的PHP Cli輸出

[英]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.

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