php执行外部进程留下脚本挂起

时间:2016-05-30 09:08:39

标签: php

我有一个简单的php脚本,通过cli运行来启动OpenVPN:

$system_string = "openvpn --config C:\\openvpn-config\\" . $config_file;
exec($system_string,$return_var);

file_put_contents('myfile.txt',$return_var);

openvpn进程启动时没有问题(openvpn控制台在单独的窗口中弹出)但是exec()的输出没有保存到文件中。换句话说,一旦openvpn服务启动,句柄就不会返回到调用的php脚本。如果我关闭openvpn接口,php脚本会继续。我在Windows上,所以不幸的是,pcntl不是一个选项。

有关如何在启动openvpn进程后继续运行php scipt的任何建议吗?

1 个答案:

答案 0 :(得分:0)

popen()似乎非常不一致,我最终使用以下内容在后台运行脚本:

$commandString = 'start /b php daemon.php"'; 
pclose(popen($commandString, 'r'));

将触发daemon.php并将控件返回给调用脚本,以便它可以继续执行。