首頁  >  文章  >  後端開發  >  PHP中長連接的實現

PHP中長連接的實現

WBOY
WBOY原創
2016-08-08 09:31:051184瀏覽

最近遇到PHP程式在執行大量資料的時候提示逾時,於是用到了set_time_limit()函數來設定PHP頁面的最大運行時間。
設定允許腳本運行的秒數。如果這是預設的,該腳本會傳回一個致命的錯誤。預設限制為30秒,或者也可以在php.ini定義max_execution_time來設定PHP頁面的最大執行時間。
在呼叫時,set_time_limit()函數從零重新啟動超時計數器。換句話說,如果逾時預設的30秒,25秒到腳本的執行參數或set_time_limit,如設定逾時時間為(20),則該腳本會執行45秒時才會逾時。
set_time_limit(900)這個函數指定了目前所在php腳本的最大執行時間,雖然設定值是900秒,實際上最大執行時間=php.ini裡的max_execution_time數值 - 目前腳本已經執行時間 + 設定值。
假如php.ini裡的max_execution_time=30,目前腳本已經執行10秒,則:
最大執行時間=30-10+900=920秒。
經過如此修改後,PHP腳本成功更新200000筆記錄。
每次我們造訪PHP腳本的時候,都是當所有的PHP腳本執行完成後,我們才得到回傳結果。如果我們需要一個腳本持續的運行,那麼我們就要透過php長連接的方式,來達到運行目的。

每個PHP腳本都限制了執行時間,所以我們需要透過 set_time_limit 來設定一個腳本的執行時間為無限長;然後使用 flush() 和 ob_flush() 來清除伺服器緩衝區,隨時輸出腳本的回傳值。

<?php
header("Content-Type: text/plain");
set_time_limit(0);

$infoString = "Hello World" . "\n";
while( isset($infoString) )
{
echo $infoString;
flush();
ob_flush();
sleep(5);
}
?>

當我們執行後,每隔5秒鐘,我們會得到一行 Hello World ,如果不按停止按鈕,瀏覽器會不停的一行一行繼續載入。
透過這個方法,我們可以完成許多功能,例如機器人爬蟲、即時留言板等程式。

以上就介紹了PHP中長連結的實現,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn