我基本上有一个 cron 工作每分钟调用一个脚本。如果前一个脚本仍在运行,则脚本立即停止(检查前一个脚本的活动时间)。
所以我犯了一个错误,脚本进入了一个无限循环(我知道它至少被 cron 调用过一次)。我创建了一个修复程序并将其上传到服务器,但我仍然想知道:
- 错误的脚本将运行多长时间?
- 我怎么知道它是否仍在运行?
- 什么会终止脚本,为什么?
该脚本只是echo
一遍又一遍地输出相同的文本。
PS PHP 在脚本中的最大执行时间设置为 0(无限),我无法直接访问服务器,只有 FTP。
我基本上有一个 cron 工作每分钟调用一个脚本。如果前一个脚本仍在运行,则脚本立即停止(检查前一个脚本的活动时间)。
所以我犯了一个错误,脚本进入了一个无限循环(我知道它至少被 cron 调用过一次)。我创建了一个修复程序并将其上传到服务器,但我仍然想知道:
该脚本只是echo
一遍又一遍地输出相同的文本。
PS PHP 在脚本中的最大执行时间设置为 0(无限),我无法直接访问服务器,只有 FTP。
我怎么知道它是否仍在运行?
只需设置一个新的 cron 作业,但让 cron 命令成为可以帮助您调试的东西:一个有用的命令是
ps -af | grep php > /some/path/to/mylogfile.txt
该ps
命令列出了正在运行的进程的信息。使用这些标志,部分输出将是启动该进程的原始 linux 命令,因此我们可以 grep 该行并查找,php
因为原始命令可能类似于:
php myscript.php
在 cron 作业运行后,输出被重定向到mylogfile.txt
供您手动读取。
进程 ID 应该是输出的一部分。然后,您可以kill
在该进程 ID 上使用该命令,同样只需将该命令作为假 cron 作业输入即可。
max_execution_time
在 php.ini 文件或 set_time_limit 方法中定义)PS:你必须 php.ini 文件 - 一个用于命令行,一个用于 Apache - 请务必更改命令行 ini 文件中的 max_execution_time