Laravel Queued Job не ждет exec для участия

мои очереди настроены и работают (задания запускаются), однако скрипт, похоже, не ожидает запуска моей строки exec, прежде чем перейти к следующей строке кода.

Это означает, что я получаю исключения в следующие несколько строк (потому что он ищет файл, который еще не был создан)

Мое закрытие:

Queue::push(function($job) use ($gid,$eid)
{
$phantomLoc = base_path()."/vendor/bin/phantomjs";
$scriptLoc = app_path()."/libraries/makeVideo.js";
$pageAddress = route('image_maker_video', array($gid,$eid));
$imageName = base_path().'/../data/team_images/'.$gid.'/video-sheets/'.$eid."/";
$execString = $phantomLoc.' '.$scriptLoc.' '.$pageAddress.' '.$imageName;
//empty the folder first
Helpers::emptyFolder($imageName);
exec($execString, $return_array, $return_value);
if ($return_value == 0) {
//now convert image sequence to video
$outputPath = base_path().'/../data/team_images/'.$gid.'/video-sheets/'.$eid;
$return_value = Helpers::PNGsToVideo($imageName, $outputPath);
if ($return_value == 0) {
//it worked!!
Helpers::emptyFolder($imageName);
//rmdir($imageName);
return "video in progress";
return Redirect::to('/team_images/'.$gid.'/video-sheets/'.$eid.".mkv");
} else {
Log::error($return_value." - ffmpeg return val");
abort(500, $return_value." - ffmpeg return val");
}
} else {
Log::error($return_value." - video phantom return val");
abort(500, $return_value." - video phantom return val");
}
$job->delete();
});

и, кажется, пропустить прямо через exec линия, хотя я думаю, что она все еще работает.

Обратите внимание, если я изменю драйвер обратно на sync тогда все работает совершенно нормально (но явно не в очереди)

Есть идеи как ждать exec?

1

Решение

Оказывается, что exec выдает ошибку, но ошибка (из phatomjs) дала код возврата 0.

Оказывается, ошибка была из-за линии

$pageAddress = route('image_maker_video', array($gid,$eid));

Предоставлял URL, который только что имел localhost скорее, чем localhost:8888

Так что я взломал его, чтобы заменить строку для localhost.

Не уверен, почему помещение его в очередь приведет к тому, что laravel предоставит неверные URL. Но, по крайней мере, это работает!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]