2012-02-07 20 views
0

我正在運行一個PHP腳本,用於偵聽在套接字上發送的數據包。 這個版本是相當粗糙,並在連續循環使用下面的代碼工作:PHP套接字腳本在3小時後超時

set_time_limit(0); 
while(TRUE) 
{ 
    //read port and do something 
} 

這是工作正常,但我已經注意到,我們必須重新啓動自動腳本每三個小時。

set_time_limit(0)應該允許腳本無限期地運行 - 是否有一個整體PHP設置,意味着腳本將在3小時後自動終止?

+0

您是否通過網絡服務器或命令行運行腳本? – 2012-02-07 14:01:55

+0

跟蹤此腳本的內存使用情況...可能是您正在使用內存上限。 – 2012-02-07 16:07:23

+0

我已經添加了基本的錯誤報告,我會留意內存使用情況 - 從命令行運行。 – Tom 2012-02-08 11:15:32

回答

1

據我所知,PHP中沒有這樣的設置。可能的問題是暫時失去連接。

至於3小時......難道你的進程正在創建一個小的內存泄漏,這迫使服務器每隔3小時終止進程?我過去曾遇到過這種情況。

關於@Salman的評論,區別在於命令行默認情況下沒有啓用各種指令,最重要的是 - set_time_limit(0)。意思是,命令行腳本默認情況下可以無限運行。

有沒有更多的細節可以使用?

+0

謝謝你,我認爲你對內存泄漏是正確的。感謝您告訴我關於set_time_limit(0)的信息,我正在從命令行運行,但試圖消除所有因素。 我今天正在做一些測試,並會回覆給您。 – Tom 2012-02-08 11:16:56

+0

認爲我解決了這個問題 - 腳本CPU使用率穩步增加。我已經添加了一個usleep(500);到循環,這已經停止了CPU跳轉。幾個小時後會通知你。 – Tom 2012-02-08 11:42:12

0
$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 />"; 
}