loadPayload() public static method

Load a job from the Redis payload
public static loadPayload ( string $queue, string $payload ) : string
$queue string The name of the queue to place the job in
$payload string The payload that was stored in Redis
return string
Ejemplo n.º 1
0
 /**
  * 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);
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * Pop the next job off of the queue.
  *
  * @param  array $queues   Queues to watch for new jobs
  * @param  int   $timeout  Timeout if blocking
  * @param  bool  $blocking Should Redis use blocking
  * @return Job|false
  */
 public function pop(array $queues, $timeout = 10, $blocking = true)
 {
     $queue = $payload = null;
     foreach ($queues as &$queue) {
         $queue = self::redisKey($queue);
     }
     if ($blocking) {
         list($queue, $payload) = $this->redis->blpop($queues, $timeout);
         $queue = $this->redis->removeNamespace($queue);
     } else {
         foreach ($queues as $queue) {
             if ($payload = $this->redis->lpop($queue)) {
                 break;
             }
         }
     }
     if (!$queue or !$payload) {
         return false;
     }
     $queue = substr($queue, strlen('queue:'));
     return Job::loadPayload($queue, $payload);
 }