exec()等待PHP中的响应
我的页面运行着一系列exec()
命令,这些命令迫使我的PHP脚本停止更改,直到收到响应为止。我如何知道exec()
不要等待响应而只运行命令?
我正在使用一个具有后端系统的复杂命令,我可以查询该命令以检查状态,因此我不关心响应。
回答:
取决于您使用的平台和运行的命令。
例如,在Unix / Linux上,您可以> /dev/null
&在命令末尾追加命令,以告诉Shell释放您已启动的进程,exec将立即返回。这在Windows上不起作用,但是有一种使用COM对象的替代方法(请参见下面的编辑)。
许多命令都有可以传递的命令行参数,因此它们释放与终端的关联并立即返回。另外,某些命令似乎挂起,因为它们已经提出了一个问题,并且正在等待用户输入以继续执行操作(例如,当运行gzip
且目标文件已存在时)。在这些情况下,通常可以传递一个命令行参数来告诉程序如何处理而不提出问题(在gzip
示例中,您将传递-f
)。
只要COM
可用,以下是在Windows上执行所需操作的代码:
$commandToExec = 'somecommand.exe';$wshShell = new COM("WScript.Shell");
$wshShell->Run($commandToExec, 0, FALSE);
请注意,它是第三个FALSE
告诉WshShell启动程序然后立即返回的0
参数(第二个参数定义为“窗口样式”,在这里可能没有意义-
您可以传递任何整数值)。WshShell对象在此处记录。这绝对有效,我以前用过…
我也在上面进行了编辑,以反映这样的事实:/dev/null
为了在* nix上&
工作,还需要使用管道exec()
。
还刚刚添加了有关WshShell的更多信息。
以上是 exec()等待PHP中的响应 的全部内容, 来源链接: utcz.com/qa/430429.html