Метод «остановки» процесса Symfony не работает

#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();