Php 拉维尔';带链的s队列,can';不要让它们按顺序运行
我想做一系列的工作,比如说我有100个视频要处理,用这段代码我希望Php 拉维尔';带链的s队列,can';不要让它们按顺序运行,php,laravel,Php,Laravel,我想做一系列的工作,比如说我有100个视频要处理,用这段代码我希望DownloadThumbnail执行一次,然后它将球传给DownloadSource,然后传给UploadToS3和ConvertVideoToH264 我在使用队列时看到的是,它首先执行所有下载缩略图,然后执行所有下载源代码等等。这不是我希望它执行的操作。让作业按顺序运行的最佳方法是什么?谢谢 foreach($hundreds as $video){ $Tasks = []; //takes few se
DownloadThumbnail
执行一次,然后它将球传给DownloadSource
,然后传给UploadToS3
和ConvertVideoToH264
我在使用队列时看到的是,它首先执行所有下载缩略图
,然后执行所有下载源代码
等等。这不是我希望它执行的操作。让作业按顺序运行的最佳方法是什么?谢谢
foreach($hundreds as $video){
$Tasks = [];
//takes few seconds
if(!$video->thm){
$Tasks[] = new DownloadThumbnail($video);
}
//takes 10 minutes
if(!$video->dl){
$Tasks[] = new DownloadSource($video);
}
//takes 10 minutes
if(!$video->s3){
$Tasks[] = new UploadToS3($video);
}
//takes 5 minutes
if($video->transcoded < 3){
$Tasks[] = new ConvertVideoToH264($video);
}
if(!empty($Tasks)){
$first_job = array_shift($Tasks);
$first_job::withChain($Tasks)->dispatch($video)->allOnQueue('processvideos');
}
}
foreach($数百作为$video){
$Tasks=[];
//需要几秒钟
如果(!$video->thm){
$Tasks[]=新下载缩略图($video);
}
//需要10分钟
如果(!$video->dl){
$Tasks[]=新下载源($video);
}
//需要10分钟
如果(!$video->s3){
$Tasks[]=新上传到3($video);
}
//需要5分钟
如果($video->transcoded<3){
$Tasks[]=新的ConvertVideoToH264($video);
}
如果(!空($Tasks)){
$first\u job=数组\u班次($Tasks);
$first_job::withChain($Tasks)->dispatch($video)->allOnQueue('processvideos');
}
}