0

可能重复:
让 PHP 等待 Matlab 脚本完成执行

好的,从php开始执行后台进程 运行后台进程效果很好。问题是,我也需要返回那个过程。对我来说明显的解决方案是:

$cmd = "($cmd > $outputfile 2>&1 || echo $? > $returnfile) & echo $! > $pidfile";
exec($cmd);

当我在命令行上运行生成的命令时,它的背景和文件按预期填写。问题是当 php exec() 运行时,命令不会进入后台(至少, exec 在命令完成之前不会返回)。我尝试了 nohup 的变体并等待 $pid,但仍然没有解决方案。

有什么想法吗?

4

1 回答 1

0

这很棘手 - 您可能会分叉该流程来做其他事情,而将原始流程留在原处。

http://php.net/manual/en/function.pcntl-fork.php

但是,如果这是一个 Web 应用程序,则没有内置方法可以将返回代码或 STDOUT 检索回父进程,因为它在技术上是异步的(您的请求-响应周期可能会在产生结果之前结束)。

不过,您可以将返回码和/或 STDOUT 存储到文件中以便稍后检查。

于 2012-10-30T15:01:15.270 回答