public function __construct($request, $response) { $this->request = $request; $this->response = $response; $this->loop = React::getLoop(); $response->writeHead(200, ['Content-Type' => 'text/html;']); }
private function setExecutor() { $loop = React::getLoop(); // $que = self::$tasks; $task = $this->tasks->getTask(); //获取最小执行时间的任务 // $this->log->info("即将执行的任务是:".json_encode($this->tasks->getQue()).'中的'.json_encode($task)); $now = time(); if (!$task) { echo '没有任务可以执行..' . PHP_EOL; return; } $futureTime = $task->exec_time - $now; if (!$this->executor || $futureTime < $this->executor->exec_time) { //未设置定时器时,直接设置定时器 //或新任务的执行时间更小,更新executor // $task = self::getTask(); if ($this->executor && $this->executor->isActive()) { //取消旧任务 echo '取消旧任务..' . PHP_EOL; $this->executor->cancel(); } $future = $loop->addTimer($futureTime, function () { $task = $this->tasks->popTask(); if ($task) { $this->execTask($task); } else { echo '没有任务弹出执行..' . PHP_EOL; } }); $future->exec_time = $futureTime + time(); //增加执行时间字段,用于比较执行时间大小 $this->executor = $future; return; } }