1

我不能使用这种$com = new Com('WScript.shell');方式,它会导致我的系统出现问题。可能我需要升级我的 PHP,因为它很旧(5.2),但我想我想要做的不是版本依赖。

我在 Windows 2008 64 位上运行 PHP。我可以在其中运行带有前缀start的命令以在单独的控制台上运行该命令。

start php myscript.php

如果这是从命令行执行的,它会为脚本启动一个新的控制台。

我只需要使用exec 从 PHP 做同样的事情。

exec("CMD /C start php myscript.php");

/C是在脚本完成时终止 CMD 会话。

但它没有给出相同的结果,它仍然等待脚本终止!

4

1 回答 1

4

这应该工作:

exec("start /B php myscript.php");

还要在 myscript.php 的开头关闭所有标准流:

fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);

如果您还想echo继续工作,您可以在关闭标准流后打开一个文件以写入标准输出:

$STDIN = fopen('/dev/null', 'r');
$STDOUT = fopen('myscript.log', 'wb');
于 2013-09-02T14:51:16.680 回答