/** * Migrate the delayed jobs that are ready to the regular queue. * * @param string $from * @param string $to * @return void */ public function migrateExpiredJobs($from, $to) { $options = ['cas' => true, 'watch' => $from, 'retry' => 10]; $this->redis->transaction($options, function ($transaction) use($from, $to) { // First we need to get all of jobs that have expired based on the current time // so that we can push them onto the main queue. After we get them we simply // remove them from this "delay" queues. All of this within a transaction. $jobs = $this->getExpiredJobs($transaction, $from, $time = $this->getTime()); // If we actually found any jobs, we will remove them from the old queue and we // will insert them onto the new (ready) "queue". This means they will stand // ready to be processed by the queue worker whenever their turn comes up. if (count($jobs) > 0) { $this->removeExpiredJobs($transaction, $from, $time); $this->pushExpiredJobsOntoNewQueue($transaction, $to, $jobs); } }); }