查找/处理停滞的PHP脚本

Bri*_*ian 2 php ajax scripting find hung

我使用Ajax启动一个可能需要几个小时才能运行的PHP脚本.它以异步方式完成,因此即使浏览器关闭,PHP脚本也会完成.

我需要处理任何因任何原因而停滞/挂起的PHP脚本.最好的方法是什么?有没有办法获取PHP脚本的进程ID,可以用来定期检查活动?我需要在开始新脚本之前杀死所有未完成的脚本.

谢谢,Brian

Pas*_*TIN 5

解决方案可能基于这个想法:

  • 在长时间运行的脚本的开头,用于getmypid获取其PID(进程ID)
  • 将PID存储在文件中
  • 在脚本结束时,就在它结束之前,删除该文件.

启动另一个进程时,它可以检查该文件是否存在:

  • 如果是,并且文件中包含PID的进程仍在运行,那么你必须:
    • 要么杀了它
    • 或者停止,考虑一个同时运行的进程就足够了
  • 如果文件存在,但具有该PID的进程不存在,则意味着您的第一个进程死亡(例如,致命错误)
  • 如果文件不存在,则表示第一个进程正常完成

关于用于检测过程是否正在运行,并最终杀死它,我不知道如果PHP提供那种functionnalities的......这可能需要使用exec调用命令行实用工具,比如pskill...