如何使用EXEC()和CMD在后台执行PHP脚本

时间:2013-09-02 14:43:43

标签: php windows cmd windows-console

我不能使用$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会话。

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

1 个答案:

答案 0 :(得分:4)

这应该起作用:

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

在myscript.php的最开头也关闭所有标准流:

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

如果您希望echo仍然有效,可以在关闭标准流后打开一个文件写入stdout:

$STDIN = fopen('/dev/null', 'r');
$STDOUT = fopen('myscript.log', 'wb');