swoole_process::wait()如何捕捉kill或者ctrl+c的状态

while ($result = \swoole_process::wait(false)) {
    $pid = $result['pid'];
    $exitCode = $result['code'];
    // 信号函数能直接共享主进程的内容
    $cmd = $this->works[$pid]['cmd'];
    list($outFile, $errorFile, $statusFile, $reportFile) = $this->getOutputFiles($pid);

    // 错误中断日志记录
    if (15 == $exitCode || 143 == $exitCode) {
        $tailMessage = "\n\n$pid : 当前进程是被kill掉的\n";
        $tailMessage .= "--------------tail out-------------\n";
        $tailMessage .= shell_exec("tail $outFile");
        $tailMessage .= "--------------tail out-------------\n";
        $tailMessage .= "\n";
        file_put_contents($errorFile, $tailMessage, FILE_APPEND);
    }
}

虽然说swoole_process::wait()返回了code码,例如

zhgxun-pro:zoulu zhgxun$ ./yii etl/default/test
Array
(
    [pid] => 22061
    [code] => 0
    [signal] => 0
)
Terminated: 15
zhgxun-pro:zoulu zhgxun$

如此操作是无效的,但是退出码15或143这样的操作,使用swoole_process应该怎么来捕捉呢?

阅读 2.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进