假设,我有一个程序叫做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 命令能不能做到)?
谢谢各位
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.