【发布时间】:2015-09-08 14:49:01
【问题描述】:
我的队列设置完毕并开始工作(作业开始运行),但脚本似乎没有等待我的 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吗?
【问题讨论】:
-
你是什么意思下一步?这是否意味着下一个排队的工作?还是下一行代码?
-
下一行代码,直接进入 if 语句
-
问题已相应编辑和更新,谢谢!
-
你是不是为了检查它是否因为错误而没有立即完成而放弃了 exec 命令?
-
刚刚拆开,奇怪的是它返回0。会不会想到一个错误会给我另一个代码?
标签: php laravel queue exec jobs