![](/img/trans.png)
[英]Is it possible to enable HTTP range request support in the PHP's built-in web server?
[英]Is it possible for a web server to respond to a HTTP request with an extended time stream of output?
在控制台中運行PHP腳本時,腳本運行時,該腳本的所有標准輸出文本都會顯示在控制台窗口中。 在運行冗長的PHP腳本時,瀏覽器窗口是否有可能在瀏覽器中類似地接收狀態報告,而不是在腳本結束時轉儲所有輸出?
是。 只需定期調用flush()和ob_flush()即可。 重要的是至少每120秒編寫一些輸出,以保持與瀏覽器的連接有效。
一個粗略的例子:
while(!$done) {
//doWork();
echo number_format(100 * ($workDone/$workTotal)) . "% ";
flush();
ob_flush();
}
編輯:這是在我的環境中有效的概念的任意證明:
print('hello');
print(str_repeat(".\n", 2048));
flush();
//this might be a safe way to only flush the buffer if necessary?
if(ob_get_length())
ob_flush();
sleep(60);
是的,如果執行時間特別長,您需要擔心的一件事就是超時。 這可能是由於PHP超時或瀏覽器超時(通常約2分鍾)而發生。
這個有關連接處理的 PHP文檔中有很多有關保持連接活動的良好信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.