Я использую приложение, которое проксирует соединение между сервером и клиентом для соединения VN C.
Итак, я хотел бы запустить это приложение через компонент процесса Symfony в PHP.
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();
, но запрашиваемая страница продолжает ждать завершения приложения до истечения времени ожидания. (Процесс выполняется успешно, но не может завершить запрос страницы)
Я пытался использовать функцию exe c (с / без > /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
PHP версия: 7.4.0
Laravel версия: v7.6.1
Symfony Версия процесса: v5.0.7
Ссылка GitHub для приложения, которое я использовал: websockify