执行.bat文件,无需等待结束

时间:2012-02-19 10:57:05

标签: php windows apache exec

我正在尝试创建一种面板,我想要“启动/停止”应用程序(游戏服务器)的操作。

HTTP服务器正在Windows Server 2008 R2上运行(WAMP SERVER 64位)

我发现我可以使用:psExec,它不是在等待完成应用程序,至少为我提供PID。

有一个代码为.bat:

cd "C:\Program Files (x86)\LucasArts\Star Wars Jedi Knight Jedi Academy\GameData\"
.\jampded  +set dedicated 2 +set net_port 29075 +set fs_game lugormod +exec server.cfg 

和PHP代码:

<?php
$command = "\"C:\\Program Files (x86)\\LucasArts\\Star Wars Jedi Knight Jedi Academy\\GameData\\PsExec.exe\" -d \"C:\\Program Files (x86)\\LucasArts\\Star Wars Jedi Knight Jedi Academy\\GameData\\serverstart.bat\"";
//echo ($command);
exec("$command");
?>

显示:执行test.php时出错,执行时间超过30秒

但是当我在控制台中编写该命令时,它会显示PID并自动退出,即使在启动时仍在运行。

(抱歉我的英文;))

2 个答案:

答案 0 :(得分:2)

PsExec应足以在后台运行进程,但它需要用户首先接受EULA(交互式窗口)。如果您是从命令行运行它,那么您已经接受了这些条款,但是apache(以及apache下的php)作为系统用户运行但尚未接受这些条款。

您可以尝试使用/accepteula选项运行psexec,看看它是否有帮助。

[+] 要获得输出PID:

echo exec('psexec.exe -accepteula -i -d "c:/file.bat" 2>&1')

答案 1 :(得分:0)

试试这个:

$command = "Path_to_your_bat_file";
pclose(popen("start /B ". $command, "r"));

这对我有用..