Symfony процесс выполняет команду, но возвращает статус ошибки - PullRequest
2 голосов
/ 27 февраля 2020

Делая

public function spawn_queue_process(){
   $command = 'echo hi > find_me.txt';

      $process = new Process($command);
      $process->setWorkingDirectory(base_path());
      $process->start();

      //Just in case :-)
      Log::error($process->getOutput());

      if(!$process->isSuccessful()){
         $exception = new ProcessFailedException($process);
         Log::error('Error on queue call');
         Log::error($exception->getTraceAsString());
      }
   }

Несмотря на то, что файл создан, Symfony будет выдавать исключение каждый раз, делая бесполезным все, что есть внутри $process вывода, и заставляя мою программу волноваться об этом.

Есть идеи?

РЕДАКТИРОВАТЬ: Просто для пояснения, я получил более сложную команду, чем эта, без проблем работающая на Linux, Windows Сервер, однако, не будет работать на каждом экземпляре кода процесса .

1 Ответ

1 голос
/ 27 февраля 2020

Решено.

Убедитесь, что вы выполняете (довольно странные) обходные пути при выполнении команд такого типа. Если вы ожидаете, что команда будет выполнена syn c или asyn c, вам придется ждать, пока команда не выполнит команду. Вы можете сделать это, используя:

$process = new Process($command);
$process->start();

//Block before command is finished sending (still async)
while($process->isRunning()){}

if(!$process->isSuccessful()){
   $exception = new ProcessFailedException($process);
   Log::error($exception->getTraceAsString());
}

В противном случае команда оценивается как все еще работающая (когда на самом деле она только что отправлена) и помечает ее как не завершенную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...