PHP套接字脚本在3小时后超时

时间:2012-02-07 13:58:33

标签: php sockets timeout

我正在运行一个PHP脚本,用于侦听在套接字上发送的数据包。 这个版本很粗糙,使用以下代码在连续循环中运行:

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

这个工作正常,但我注意到我们必须每三个小时自动重启脚本。

set_time_limit(0)应该允许脚本无限期运行 - 是否有整体PHP设置,这意味着脚本将在3小时后自动终止?

3 个答案:

答案 0 :(得分:1)

据我所知,PHP中没有这样的设置。可能的问题是暂时失去连接。

至于3小时......可能是你的进程正在创建一个小的内存泄漏,迫使服务器大约每3个小时终止一次进程?我过去曾经遇到过这种情况。

关于@Salman的评论,区别在于命令行默认没有启用各种指令,最重要的是 - set_time_limit(0)。这意味着,命令行脚本默认情况下可以无限运行。

还有更多细节可供使用吗?

答案 1 :(得分:0)

根据这个9岁的帖子: https://bugs.php.net/bug.php?id=29560 套接字中存在一个错误,导致内存泄漏。 改为使用stream_socket_server。

答案 2 :(得分: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 />";
}