Beispiel #1
0
 /**
  * 重启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;
         }
     }
 }