我有一个PHP passthru()
阻塞时,它应该启动守护进程的问题。PHP passthru()块与进程更换
我有一个Node.js守护进程和一个bash脚本包装器。该bash脚本使用了一些进程替换,因为Node.js服务器不能直接登录到syslog。在bash脚本包含这样的命令:
forever -l app.log app.js
但是,因为我希望它记录到系统日志,我使用:
forever -l >(logger) app.js
的logger
处理替换创建的文件描述符像/dev/fd/63
传递其路径以forever
命令作为要使用的日志文件。
当我直接使用bash脚本启动守护程序时,这种方式很好用,但是当使用PHP passthru()或exec()执行bash脚本时,这些调用将会阻塞。如果我使用常规日志文件而不是进程替换,那么passthru()和exec()都可以正常工作,在后台启动守护进程。
我已经创建了一个完整的工作示例(使用一个简单的PHP后台程序代替的Node.js)在Github上的要点是:https://gist.github.com/1977896(需要PHP 5.3.6+)
为什么在过程中更换passthru()
通话块?我能做些什么来解决它吗?