当前位置: 首页 > 面试题库 >

exec()等待PHP中的响应

辛成周
2023-03-14
问题内容

我的页面运行着一系列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的更多信息。



 类似资料:
  • 问题内容: 我有一个页面,使用被称为100次(async:true)的jQuery.ajax,问题是,当它们都被加载时,我需要系统等待所有100次调用返回后才能继续。我将如何处理? 提前致谢!:) 更新: 这些调用在for()循环中进行(其中有100个:) 问题答案: 最好的方法是使用。您可以按以下方式使用它: 另外,如果您在数组中拥有所有AJAX调用,则可以使用: 请注意,这至少需要jQuery

  • 我有一个项目,我需要使用一个站点从中获取数据。所以事情是这样的:使用htmlUnit我用我的数据填充文本框,然后我按下锚,它使用ajax下载我需要的内容并动态更改超文本标记语言页面,在模态窗口中显示内容。但是在我使用锚上的. Click()后,我得到了相同的页面,没有更新,在寻找解决方案后,我在网络上发现了这个: HtmlUnit将执行Ajax调用并更新页面。请注意,与常规页面加载不同,Click

  • 我有一个endpoint生成一些数据(需要一些时间),另一个endpoint可以用来获取生成的数据。我用wait调用第一个,从响应中获取id,并想调用第二个,而它的状态不是“Success”(它表示响应中准备和存储的数据),并继续我的脚本。 这是我的代码 它的工作,但我赢得了这么多的请求,我如何设置一些请求的间隔?我尝试使用await setInterval(),但是代码继续执行,没有等待结果 e

  • 我有一个Vue组件,我试图从使用axios的API获取一些数据。 函数位于Vue组件文件之外的另一个JS文件中,该文件使用axios.get. 问题是,未定义,因为需要一些时间才能返回响应数据。如何等待响应数据然后返回?

  • 是否可以在不等待响应的情况下发送HTTP请求? 我在做一个物联网项目,需要记录传感器的数据。在每一个设置中,都有许多传感器,一个中央协调器(主要由Raspberry Pi实现)从传感器收集数据,并通过Internet将数据发送到服务器。 提前感谢! 编辑:传感器是无线的,但他们使用的技术在发送到协调器时很少(或没有)延迟。此协调器必须通过Internet发送数据。但是,假设互联网连接不好。因为这将

  • 问题内容: PHP会以1-2秒的延迟返回值jQuery.post不等待响应。 您如何看待,是否有可能解决该问题并等待响应? 注意 与get相同的功能效果很好 问题答案: $ .post是异步的,您需要使用$ .ajax并将async设置为false,这样您就可以等待响应。您可以在此处了解更多信息: http //api.jquery.com/jQuery.ajax/