/** * 重启workers * @return void */ public static function restartWorkers() { // 标记server状态 if (self::$serverStatus != self::STATUS_RESTARTING_WORKERS) { self::$serverStatus = self::STATUS_RESTARTING_WORKERS; } // 没有要重启的进程了 if (empty(self::$workerToRestart)) { self::$serverStatus = self::STATUS_RUNNING; self::notice("\nWorker Restart Success"); return true; } // 遍历要重启的进程 标记它们重启时间 foreach (self::$workerToRestart as $pid => $stop_time) { if ($stop_time == 0) { self::$workerToRestart[$pid] = time(); self::sendCmdToWorker(Cmd::CMD_RESTART, $pid); Task::add(PHPServer::$killWorkerTimeLong, array('PHPServer', 'forceKillWorker'), array($pid), false); break; } } }