php守护进程一直在但是长时间运行后仍然会挂起不执行?

先上代码:(没用框架,全部原生)

`script.php`:

reqiure_once('path/to/HandleClass.php');
function run(){
    //省略取值逻辑。。。
    if(A==B) {
        // HandleClass里每次都会重新建立DB连接,并及时释放
        new HandleClass();
    }
}

while(true){
    run();
    sleep(600);
}

使用的是`supervisor`的守护进程功能, 它确实可以保证进程在,并且保证进程退出后自动重启。

出现问题:

  • 脚本大概半个月、一个月左右就会出现进程在, 却不干事了
  • 查资料说可能是变量、 DB等资源长时间就被释放了,但我觉得sleep(600)之后,重新run(), 又是全新的一次执行,并不存在因为被释放资源导致的挂起(乃最大疑惑)。

请教:

  1. 以上进程挂起到底可能是什么原因, 困扰很久了。。。
  2. 请只针对这种情况, 直接一句换crontab 等回答就免抬贵手了 :-)
慕尼黑的夜晚无繁华
浏览 352回答 3
3回答

倚天杖

打印下日志,在sleep后面

达令说

资源长时间就被释放这种说法,我是不认同的。我一个项目用的是纯PHP多进程守护处理任务,跑了一年多都没问题。 仅从代码上,尚未看出有什么问题。是否可以多加些运行日志,这样有助于排查问题?
打开App,查看更多内容
随时随地看视频慕课网APP