Php 拉维尔';带链的s队列,can';不要让它们按顺序运行

Php 拉维尔';带链的s队列,can';不要让它们按顺序运行,php,laravel,Php,Laravel,我想做一系列的工作,比如说我有100个视频要处理,用这段代码我希望DownloadThumbnail执行一次,然后它将球传给DownloadSource,然后传给UploadToS3和ConvertVideoToH264 我在使用队列时看到的是,它首先执行所有下载缩略图,然后执行所有下载源代码等等。这不是我希望它执行的操作。让作业按顺序运行的最佳方法是什么?谢谢 foreach($hundreds as $video){ $Tasks = []; //takes few se

我想做一系列的工作,比如说我有100个视频要处理,用这段代码我希望
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');
}
}