예제 #1
0
 /**
  * Job执行逻辑
  */
 public function handle_request()
 {
     // 获取任务
     $tasks = $this->fetchTasks();
     // 分发任务
     /**
      * @var Model_House_UpDown_Task $task
      */
     foreach ($tasks as $task) {
         $rawColumnTask = $task->toRawColumnArray();
         // 将任务推送到Redis队列
         $this->log('Before redis enqueue: ' . json_encode($rawColumnTask), $rawColumnTask['id']);
         $queue = $this->chooseQueue($rawColumnTask['broker_id']);
         $result = $this->redisQueueBll->enqueue($queue, json_encode($rawColumnTask));
         $this->log('After redis enqueue: ' . json_encode(array('queue' => $queue, 'result' => $result)), $rawColumnTask['id']);
         // 更新源队列中任务状态
         $this->log('Before update task status.', $rawColumnTask['id']);
         $task->flag = 1;
         $result = $task->save();
         $this->log('After update task status: ' . json_encode(array('result' => $result)), $rawColumnTask['id']);
         // 更新游标
         $this->cursor->setId($task->id)->save();
     }
     // 如果任务为空,休眠1s
     if (empty($tasks)) {
         sleep(1);
     }
 }