我正在運行一個PHP腳本,用於偵聽在套接字上發送的數據包。 這個版本是相當粗糙,並在連續循環使用下面的代碼工作:PHP套接字腳本在3小時後超時
set_time_limit(0);
while(TRUE)
{
//read port and do something
}
這是工作正常,但我已經注意到,我們必須重新啓動自動腳本每三個小時。
set_time_limit(0)應該允許腳本無限期地運行 - 是否有一個整體PHP設置,意味着腳本將在3小時後自動終止?
我正在運行一個PHP腳本,用於偵聽在套接字上發送的數據包。 這個版本是相當粗糙,並在連續循環使用下面的代碼工作:PHP套接字腳本在3小時後超時
set_time_limit(0);
while(TRUE)
{
//read port and do something
}
這是工作正常,但我已經注意到,我們必須重新啓動自動腳本每三個小時。
set_time_limit(0)應該允許腳本無限期地運行 - 是否有一個整體PHP設置,意味着腳本將在3小時後自動終止?
據我所知,PHP中沒有這樣的設置。可能的問題是暫時失去連接。
至於3小時......難道你的進程正在創建一個小的內存泄漏,這迫使服務器每隔3小時終止進程?我過去曾遇到過這種情況。
關於@Salman的評論,區別在於命令行默認情況下沒有啓用各種指令,最重要的是 - set_time_limit(0)。意思是,命令行腳本默認情況下可以無限運行。
有沒有更多的細節可以使用?
根據這個9歲的職位: https://bugs.php.net/bug.php?id=29560 在套接字有一個錯誤,導致它泄漏內存。 改爲使用stream_socket_server。
$start_time_increment = strtotime("7.00am");
$end_time_increment = strtotime("10.00pm");
for ($date = $start_time_increment; $date <=$end_time_increment; $date = strtotime("+3 hours",$date)) **{**
echo date(" h:i:a",$date)."<br />";
}
您是否通過網絡服務器或命令行運行腳本? – 2012-02-07 14:01:55
跟蹤此腳本的內存使用情況...可能是您正在使用內存上限。 – 2012-02-07 16:07:23
我已經添加了基本的錯誤報告,我會留意內存使用情況 - 從命令行運行。 – Tom 2012-02-08 11:15:32