如果需要的时间超过X秒,请重新启动PHP脚本循环
我有一个php脚本,它可以在不到10分钟的时间内执行一些操作(当它没有冻结时) 问题是,有时,由于我不知道的原因(可能是连接到远程服务器的问题),它会在没有任何错误的情况下冻结(光标闪烁,就像它仍在运行一样),需要手动关闭并重新启动才能再次工作。很多时候,我只发现它被延迟了几个小时,这并不好 我已经尝试了max_execution_time,但它返回致命错误,不允许我重新启动它,这不是我的想法 以下是示例代码:如果需要的时间超过X秒,请重新启动PHP脚本循环,php,Php,我有一个php脚本,它可以在不到10分钟的时间内执行一些操作(当它没有冻结时) 问题是,有时,由于我不知道的原因(可能是连接到远程服务器的问题),它会在没有任何错误的情况下冻结(光标闪烁,就像它仍在运行一样),需要手动关闭并重新启动才能再次工作。很多时候,我只发现它被延迟了几个小时,这并不好 我已经尝试了max_execution_time,但它返回致命错误,不允许我重新启动它,这不是我的想法 以下是示例代码: <?php ini_set('max_execution_time', 12
<?php
ini_set('max_execution_time', 1200);
while (1) {
include_once 'once.php';
sleep(5);
include 'a.php';
sleep(5);
include 'b.php';
sleep(600);
}
我在我们的服务器上运行了一个PHP脚本,它是一些关键任务的工作人员。我有另一个脚本计划作为一个cron作业,它“密切关注”这个脚本。下面是整个事情的样子:
有两个脚本worker.php,它有一个“while(1)”循环,所以它永远不会消失,还有一个monitor.php,计划每15分钟运行一次
每次循环启动时,worker.php都会使用getmypid()将其pid写入一个文件(这样pid总是更新的)
当cron作业执行monitor.php时,它每隔15分钟从文件中读取pid,并检查进程是否通过ps
或文件u运行('/proc/'.$pid)
3.1. 若pid是有效的(进程正在运行),它什么也不做,只是退出。
3.2. 如果pid无效,它将执行worker.php。我还在这里添加了邮件通知
到目前为止,我发现cron jobs是最可靠的,所以我选择了这个解决方案。也许通过使用它,您可以自动重新启动代码: