proc_get_status显示proc_open之后后台进程未运行

时间:2018-09-10 11:13:16

标签: php

我的应用程序使用proc_open派生了一个PHP后台进程。每天要执行数千次,而且效果很好。但是,当我使用proc_get_status

检查过程时,每小时会得到running=false

代码大致如下:

$process = proc_open( '/usr/bin/php -f file.php &', [], $pipes );
if( ! $process ){
    throw new Exception('proc_open failed'); // <- never happens
}
$stat = proc_get_status($process);
if( ! $stat['running'] ){
    throw new Exception('Process not running'); // <- fails here
}

发生这种情况时,统计信息会给出:

{"running":false,"signaled":false,"stopped":false,"exitcode":0,"termsig":0,"stopsig":0}

该脚本可以长时间运行,因此除非抛出错误,否则退出速度不能如此之快。我已经验证脚本确实可以成功运行。唯一的问题是,除非我在前台运行它,否则我无法检查它是否启动。

什么能导致统计信息显示proc_open调用成功后脚本未运行?

0 个答案:

没有答案