shell_exec阻塞直到完成,我希望它是非阻塞的

时间:2012-11-06 07:46:17

标签: php linux terminal

我有以下PHP代码:

shell_exec("(traceroute odesk.com > trace.txt;echo 'traceIsDone'>>trace.txt) &");

此行需要50秒才能完成,它可以使用ping,当我在终端窗口中执行该行时,它会立即返回:

(traceroute odesk.com > trace.txt;echo 'traceIsDone'>>trace.txt) &

如何在PHP转到下一行后立即执行该命令?所以不要等待shell_exec命令完成?

1 个答案:

答案 0 :(得分:2)

您应该使用popen()

  

打开通过分叉命令执行的命令执行的进程的管道。

它说它分叉命令,即它在一个新线程中启动它,因此它不会阻塞你的主线程。因此,我认为这就是你想要使用的东西。

您可以使用fopen()(如果您熟悉它),使用fgets()fgetss()fwrite()

popen() in the PHP Manual