假设,我有一个程序叫做foo,我需要用 PHP 去调用这个程序做几个任务,任务之间毫不关联,不同任务传给这个程序的参数不同,任务执行完或者任务执行出错,程序都会退出(当然 exit_code 不同)
我现在的想法是这样的,用 PHP 的 shell_exec 函数,后台方式运行程序:
$bar = shell_exec('nohup /path/to/foo -d <一些参数> 2>&1 1>/path/to/log/<参数的 Hash>.log &');
//下面有些别的程序来处理返回的$bar ,获取程序 PID ,并存进去数据库或者别的什么地方
当前台提交任务(就是提交参数)的时候,就调用上面的脚本去运行 foo 这个程序,拿到 PID 之后再做处理
我的问题是:
1.这个方法有没有更优解?
2.如何得知对应 PID 的程序已经正确执行完毕,或者说,这种情况下,如何检查 exit_code 是否为 0 (因为不确定错误报告会不会输出到 stderr )(附:不确定 jobs 命令能不能做到)?
谢谢各位