Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果需要的时间超过X秒,请重新启动PHP脚本循环_Php - Fatal编程技术网

如果需要的时间超过X秒,请重新启动PHP脚本循环

如果需要的时间超过X秒,请重新启动PHP脚本循环,php,Php,我有一个php脚本,它可以在不到10分钟的时间内执行一些操作(当它没有冻结时) 问题是,有时,由于我不知道的原因(可能是连接到远程服务器的问题),它会在没有任何错误的情况下冻结(光标闪烁,就像它仍在运行一样),需要手动关闭并重新启动才能再次工作。很多时候,我只发现它被延迟了几个小时,这并不好 我已经尝试了max_execution_time,但它返回致命错误,不允许我重新启动它,这不是我的想法 以下是示例代码: <?php ini_set('max_execution_time', 12

我有一个php脚本,它可以在不到10分钟的时间内执行一些操作(当它没有冻结时)

问题是,有时,由于我不知道的原因(可能是连接到远程服务器的问题),它会在没有任何错误的情况下冻结(光标闪烁,就像它仍在运行一样),需要手动关闭并重新启动才能再次工作。很多时候,我只发现它被延迟了几个小时,这并不好

我已经尝试了max_execution_time,但它返回致命错误,不允许我重新启动它,这不是我的想法

以下是示例代码:

<?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是最可靠的,所以我选择了这个解决方案。

    也许通过使用它,您可以自动重新启动代码: