我使用的应用程序正在代理服务器和客户端之间的VNC连接。
因此,我想通过PHP中Symfony的Process组件运行此应用程序。
此项目中使用Laravel Framework,并尝试通过请求页面(路由)来运行应用程序。
问题是应用程序需要在后台连续运行。下面是从CMD.exe运行的进程的输出;
作为代码,我尝试了以下组合;
$process = new Process(['websockify.exe', '7777', '127.0.0.1:5901']);
$process->start();
$process->waitUntil(function ($type, $output) {
echo $output;
return strpos($output, 'proxying from');
});
但是在获得此输出之后,进程终止了。我只希望它在后台连续运行。
我也尝试使用$process->run();
,但是请求的页面一直等待应用程序终止,直到超时。 (进程成功运行,但无法完成页面请求)
我尝试使用exec函数(带有/不带有> /dev/null 2>&1 &
);
exec('websockify.exe 7777 127.0.0.1:5901 > /dev/null 2>&1 &');
但仍与Process组件相同。它会立即终止该过程。
还尝试了以下代码,但是没有运气。
$process = new Process(['websockify.exe', '7777', '127.0.0.1:5901', '&']);
$process->disableOutput();
$process->setTimeout(1800);
$process->start();
作为总结,我想运行一个进程,该进程应在PHP中始终在后台运行。
环境:Windows 10和WAMP Server
PHP版本: 7.4.0
Laravel版本:v7.6.1
Symfony Process版本: v5.0.7
我使用的应用程序的GitHub链接:websockify