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

从CLI调用PHP脚本时,PHP脚本何时停止执行?,php,cron,command-line-interface,infinite-loop,terminate,Php,Cron,Command Line Interface,Infinite Loop,Terminate,我基本上有一个cron任务,每分钟调用一个脚本。如果上一个脚本仍在运行,脚本将立即停止(检查上一个脚本的活动时间) 所以我制造了一个bug,脚本进入无限循环(我知道它至少有一次是由cron调用的)。我创建了一个修复程序并将其上载到服务器,但我仍然想知道: 被窃听的脚本将运行多长时间 我怎么知道它是否还在运行 终止脚本的原因是什么 这个脚本只是一次又一次地回显相同的文本 p.S.PHP在脚本中的最大执行时间设置为0(无限),我没有直接访问服务器的权限,只有FTP 直到脚本运行到超时(max\u e

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

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

  • 被窃听的脚本将运行多长时间
  • 我怎么知道它是否还在运行
  • 终止脚本的原因是什么
  • 这个脚本只是一次又一次地回显相同的文本

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

  • 直到脚本运行到超时(
    max\u execution\u time
    在php.ini文件或set\u time\u limit方法中定义)
  • 看看正在运行的进程
  • 向脚本发送kill命令或等待超时发生
  • PS:您必须创建php.ini文件-一个用于命令行,一个用于Apache-确保更改命令行ini文件中的最大执行时间

    我怎么知道它是否还在运行

    只需设置一个新的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作业输入即可。

    您仍然可以联系服务器支持以提高执行时间或在代码中设置执行时间。要检查正在运行的进程,可以使用php函数。。