从CLI调用时,PHP脚本何时停止执行?

时间:2012-09-25 23:16:29

标签: php cron command-line-interface infinite-loop terminate

我基本上每分钟都有一个cron作业调用一个脚本。如果前一个脚本仍在运行(检查上一个脚本的活动时间),脚本会立即停止。

所以我制作了一个bug,然后脚本进入了一个无限循环(我知道它至少被cron从一次调用)。我创建了一个修复程序并将其上传到服务器,但我仍然想知道:

  1. 错误的脚本会运行多长时间?
  2. 我怎么知道它是否仍在运行?
  3. 终止脚本的原因是什么?
  4. 脚本只是echo一遍又一遍地发出相同的文字。

    P.S。 PHP在脚本中的最大执行时间设置为0(无限),我没有直接访问服务器,只有FTP。

2 个答案:

答案 0 :(得分:0)

  

我怎么知道它是否仍在运行?

只需设置一个新的cron作业,但让cron命令可以帮助你调试: 一个有用的将是

ps -af | grep php > /some/path/to/mylogfile.txt

ps命令列出有关正在运行的进程的信息。使用这些标志,输出的一部分将是启动该过程的原始linux命令,因此我们可以grep该行并查找php,因为原始命令可能类似于:

php myscript.php

将输出重定向到mylogfile.txt,以便在cron作业运行后手动读取。

进程ID应该是输出的一部分。然后,您可以在该进程ID上使用kill命令,再次输入命令作为伪造的cron作业。

答案 1 :(得分:-2)

  1. 直到脚本运行超时(在php.ini文件或set_time_limit方法中定义max_execution_time
  2. 查看正在运行的流程
  3. 将kill命令发送到脚本或等到超时发生
  4. PS:你必须使用php.ini文件 - 一个用于命令行,一个用于Apache - 确保在命令行ini文件中更改max_execution_time