/**
  * 设置server信号处理函数
  * @param null $null
  * @param int $signal
  * @return void
  */
 public static function signalHandler($signal)
 {
     switch ($signal) {
         // 停止服务信号
         case SIGINT:
             self::notice("Workerman is shutting down");
             self::stop();
             break;
             // 测试用
         // 测试用
         case SIGUSR1:
             break;
             // worker退出信号
         // worker退出信号
         case SIGCHLD:
             // 这里什么也不做
             // self::checkWorkerExit();
             break;
             // 平滑重启server信号
         // 平滑重启server信号
         case SIGHUP:
             Lib\Config::reload();
             self::notice("Workerman reloading");
             $pid_worker_name_map = self::getPidWorkerNameMap();
             $pids_to_restart = array();
             foreach ($pid_worker_name_map as $pid => $worker_name) {
                 // 如果对应进程配置了不热启动则不重启对应进程
                 if (Lib\Config::get($worker_name . '.no_reload')) {
                     // 发送reload信号,以便触发onReload方法
                     posix_kill($pid, SIGHUP);
                     continue;
                 }
                 $pids_to_restart[] = $pid;
             }
             self::addToRestartPids($pids_to_restart);
             self::restartPids();
             break;
     }
 }
Exemple #2
0
 /**
  * 设置server信号处理函数
  * @param null $null
  * @param int $signal
  * @return void
  */
 public static function signalHandler($signal)
 {
     switch ($signal) {
         // 停止server信号
         case SIGINT:
             self::notice("Server is shutting down");
             self::stop();
             break;
             // 测试用
         // 测试用
         case SIGUSR1:
             break;
             // worker退出信号
         // worker退出信号
         case SIGCHLD:
             // 不要在这里fork,fork出来的子进程无法收到信号
             // self::checkWorkerExit();
             break;
             // 平滑重启server信号
         // 平滑重启server信号
         case SIGHUP:
             Lib\Config::reload();
             self::notice("Server reloading");
             self::addToRestartWorkers(array_keys(self::getPidWorkerNameMap()));
             self::restartWorkers();
             break;
     }
 }