我正在运行一个PHP脚本,用于侦听在套接字上发送的数据包。 这个版本很粗糙,使用以下代码在连续循环中运行:
set_time_limit(0);
while(TRUE)
{
//read port and do something
}
这个工作正常,但我注意到我们必须每三个小时自动重启脚本。
set_time_limit(0)应该允许脚本无限期运行 - 是否有整体PHP设置,这意味着脚本将在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 />";
}