我正在运行一个PHP脚本,用于侦听套接字上发送的数据包。这个版本相当粗糙,通过使用以下代码在一个连续的循环中运行:
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 />";
}