PHP运行非阻塞系统调用

时间:2011-09-04 23:10:11

标签: php parallel-processing nonblocking

如何在PHP中运行非阻塞系统调用?

系统调用将调用由第二个PHP脚本运行的流服务..所以我的页面坐下来等待这个调用。

我对解决方案的两点看法:

1:存在通过非阻塞

执行系统调用的本机方法/参数

2:在一个新的C ++程序上运行system(),然后在一个sep上自行分叉并运行实际的php脚本。螺纹

是否存在以非阻塞方式执行系统调用的本机方法,或者我是否需要解决此问题...

我目前有shell_exec('nohup php /path/to/file.php&')但它仍然存在

1 个答案:

答案 0 :(得分:4)

来自PHP manual

  

如果程序是使用此功能启动的,则为了它   继续在后台运行,程序的输出必须是   重定向到文件或其他输出流。没有这样做会   导致PHP挂起,直到程序执行结束。

同一页面(基于linux)的评论中提供了一个示例:

  

如果你想启动一个继续独立运行的php进程   从apache(使用不同的父pid)使用nohub。例如:

     

exec('nohup php process.php> process.out 2> process.err< / dev / null   &安培;');