【问题标题】:nohup on windows, exec without waiting for finishWindows上的nohup,无需等待完成即可执行
【发布时间】:2010-11-16 18:23:07
【问题描述】:

在 Windows 上有类似的东西吗?

exec("nohup /usr/bin/php -f sleep.php > /dev/null 2>&1 &");

【问题讨论】:

标签: php windows exec


【解决方案1】:

这并不难(尽管有一些细微差别)...您只需要使用WScript.Shell COM 对象:

$shell = new COM("WScript.Shell");
$shell->run($command, 0, false);

就是这样……

【讨论】:

  • 有什么例外?尝试将其包裹在 try { $shell... } catch (Exception $e) { var_dump($e->getMessage(), $e->getCode()); } 中,看看是什么原因造成的...
  • 错误代码是什么?什么是完整的错误?你能发布产生错误的代码的完整代码吗?
  • 好的,你的方法可以工作,除了 $shell->release();抛出异常
  • 我的命令的 I/O 重定向 > somefile.txt 在我将 %comspec% /c 添加到命令的开头之前无法正常工作。
  • 很好的答案,找了好久,COM需要安装:php.net/manual/en/com.installation.php
【解决方案2】:

默认情况下,Windows 命令start 不等待子进程。您可能希望/b 开关避免创建命令提示符窗口。

exec("start /b c:\\php\\php.exe -f sleep.php");

【讨论】:

  • 不完全正确。根据the docs on start:只有在您启动GUI 进程时它才不会等待。如果您正在启动控制台进程,它会等待(至少 XP 是这样说的)...
猜你喜欢
  • 1970-01-01
  • 2020-07-20
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
相关资源
最近更新 更多