/** * 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); } }