我从PHP调用一些bash代码,但即使我将bash(带&)分叉,PHP也不会在完全bash完成之前完成.
这段代码:
<html> <body> HTML START<br> <pre> <?PHP echo "PHP START\n"; echo `sleep 30 &`; echo "PHP END\n"; ?> </pre> HTML END<br> </body> </html>
我真正想要的是从PHP启动GUI应用程序,它应该继续运行.
解决方法
关闭睡眠调用中的所有文件描述符以允许它分离:
<?PHP echo "PHP START\n"; echo `sleep 30 <&- 1<&- 2<&- &`; echo "PHP END\n"; ?>
否则,输出文件描述符仍然打开,并且PHP仍在尝试等待接收其输出,即使该进程不再直接附加.
$time PHP5 test.PHP; ps auxw | grep sleep | grep -v grep PHP START PHP END real 0m0.019s user 0m0.008s sys 0m0.004s cduffy 6239 0.0 0.0 11240 576 pts/0 S 11:23 0:00 sleep 30
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。