getScheduledVideoClips(); if ($scheduledClips === []) { return true; } $data = []; foreach ($scheduledClips as $scheduledClip) { $data[] = [ 'id' => $scheduledClip->id, 'status' => 'pending', ]; } (new ClipModel())->updateBatch($data, 'id'); // Loop through clips to generate them foreach ($scheduledClips as $scheduledClip) { // set clip to pending (new ClipModel()) ->update($scheduledClip->id, [ 'status' => 'running', ]); $clipper = new VideoClipper( $scheduledClip->episode, $scheduledClip->start_time, $scheduledClip->end_time, $scheduledClip->format, $scheduledClip->theme['name'], ); $exitCode = $clipper->generate(); if ($exitCode === 0) { // success, video was generated $scheduledClip->setMedia($clipper->videoClipFilePath); (new ClipModel())->update($scheduledClip->id, [ 'media_id' => $scheduledClip->media_id, 'status' => 'passed', 'logs' => $clipper->logs, ]); } else { // error (new ClipModel())->update($scheduledClip->id, [ 'status' => 'failed', 'logs' => $clipper->logs, ]); } } return true; } }