Laravel's Queue with Chain, не может заставить их работать последовательно - PullRequest
1 голос
/ 05 июня 2019

Я хотел бы создать цепочку заданий, скажем, у меня есть 100 видео для обработки, с этим кодом я ожидал бы, что DownloadThumbnail выполняется один раз, затем передает мяч на DownloadSource, затем на UploadToS3 и ConvertVideoToH264.

Что я вижу при использовании очереди, так это то, что сначала она делает все DownloadThumbnail, затем все DownloadSource и т. Д. И т. Д. Это не то, чего я хотел. Каков наилучший подход, чтобы задания выполнялись последовательно? спасибо!

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');
    }

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