从PHP调用Shell命令而不考虑输出


Call Shell Command from PHP without considering output

我正在尝试编写一个cronjob,它启动我想要并行运行的多个进程。

我使用foreach调用每个命令,但命令行等待输出。我不想把它放进去。

想知道是否有人为此使用过任何图书馆?

在命令后面添加一个符号:

$ php task.php &

它将在后台运行php实例并继续。

如果你阅读passthru的手册,你会注意到它告诉你如何避免这种情况。。。

如果一个程序是用这个函数启动的,为了让它在后台继续运行,程序的输出必须重定向到一个文件或另一个输出流。否则将导致PHP挂起,直到程序执行结束。

因此,如果您不关心输出,您可以依靠UNIX-fds将输出重定向到类似/dev/null的东西,或者如果您确实想保存输出,则可以重定向到某个文件,这将避免PHP等待命令完成。

pssthru("somecommand > /some/path/to/file")