【问题标题】:php executing external process leaves script hangingphp执行外部进程使脚本挂起
【发布时间】:2016-05-30 09:08:38
【问题描述】:

我有一个通过 cli 运行的简单 php 脚本来启动 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 有什么建议吗?

【问题讨论】:

标签: php


【解决方案1】:

popen() 好像挺不协调的,我最终还是用下面的在后台运行了一个脚本:

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

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

【讨论】:

    最近更新 更多