/** * Mark the current job stopped * This is an internal function as the job is either completed, cancelled or failed */ protected function stopped() { $this->redis->zrem(Queue::redisKey($this->queue, 'running'), $this->payload); Stats::decr('running', 1); Stats::decr('running', 1, Queue::redisKey($this->queue, 'stats')); }
/** * Find any delayed jobs and add them to the queue if found * * @param int $endTime optional end time for range * @param int $startTime optional start time for range */ public function queueDelayed($endTime = null, $startTime = 0) { $startTime = $startTime ?: 0; $endTime = $endTime ?: time(); foreach ($this->resolveQueues() as $queue) { $this->redis->multi(); $jobs = $this->redis->zrangebyscore(Queue::redisKey($queue, 'delayed'), $startTime, $endTime); $this->redis->zremrangebyscore(Queue::redisKey($queue, 'delayed'), $startTime, $endTime); list($jobs, $found) = $this->redis->exec(); if ($found > 0) { foreach ($jobs as $payload) { $job = Job::loadPayload($queue, $payload); $job->setWorker($this); if (Event::fire(Event::JOB_QUEUE_DELAYED, $job) !== false) { $job->queue(); Event::fire(Event::JOB_QUEUED_DELAYED, $job); } } Stats::decr('delayed', $found); Stats::decr('delayed', $found, Queue::redisKey($queue, 'stats')); $this->log('Added <pop>' . $found . '</pop> delayed job' . ($found == 1 ? '' : 's') . ' to <pop>' . $queue . '</pop> queue', Logger::NOTICE); } } }