#laravel #symfony-process
Вопрос:
У меня есть этот код:
$process = Process::fromShellCommandline('bash ./receive.sh url=' . env('SGW_URL') . ' cert=certs/privateKey.p12?' . env('SGW_CERT_PASS'), '/var/www/sgwClientFiles/'); $process-gt;run(); $process-gt;getCommandLine(); if (!$process-gt;isSuccessful()) { throw new ProcessFailedException($process); } $process-gt;stop(15); return $process;
и это не прекращается через 15 секунд. Вместо этого я получаю ошибку «превышен тайм-аут в 60 секунд».
Дело в том, что команда, которую я пытаюсь запустить из командной строки, не останавливается сама по себе, и ее нужно остановить из сценария. Есть идеи, почему метод «stop()» не работает должным образом?
Ответ №1:
Если кому-то интересно, я решил эту проблему следующим образом:
$process-gt;start(); while (time() - $process-gt;getStartTime() lt;= 15) { usleep(2000); } $process-gt;stop();