walkor 12 år sedan
förälder
incheckning
c7fae40ae6
1 ändrade filer med 16 tillägg och 28 borttagningar
  1. 16 28
      workers/Monitor.php

+ 16 - 28
workers/Monitor.php

@@ -327,14 +327,26 @@ class Monitor extends Man\Core\SocketWorker
                 break;
                 // 平滑重启server
             case 'reload':
-                if($master_pid)
+                $pid_worker_name_map = $this->getPidWorkerMap();
+                unset($pid_worker_name_map[posix_getpid()]);
+                if($pid_worker_name_map)
                 {
-                    posix_kill($master_pid, SIGHUP);
-                    $this->sendToClient("Restart Workers\n");
+                    foreach($pid_worker_name_map as $pid=>$item)
+                    {
+                        posix_kill($pid, SIGHUP);
+                    }
                 }
                 else
                 {
-                    $this->sendToClient("Can not get master pid\n");
+                    if($master_pid)
+                    {
+                        posix_kill($master_pid, SIGHUP);
+                        $this->sendToClient("Restart Workers\n");
+                    }
+                    else
+                    {
+                        $this->sendToClient("Can not get master pid\n");
+                    }
                 }
                 break;
                 // admin管理员退出
@@ -589,30 +601,6 @@ class Monitor extends Man\Core\SocketWorker
     }
     
     /**
-     * 安装信号处理函数
-     * @return void
-     */
-    protected function installSignal()
-    {
-        // 闹钟信号
-        $this->event->add(SIGALRM, \Man\Core\Events\BaseEvent::EV_SIGNAL, array($this, 'signalHandler'), SIGALRM);
-        // 终止进程信号
-        $this->event->add(SIGINT, \Man\Core\Events\BaseEvent::EV_SIGNAL, array($this, 'signalHandler'), SIGINT);
-        // 报告进程状态
-        $this->event->add(SIGUSR1, \Man\Core\Events\BaseEvent::EV_SIGNAL, array($this, 'signalHandler'), SIGUSR1);
-        // 报告该进程使用的文件
-        $this->event->add(SIGUSR2, \Man\Core\Events\BaseEvent::EV_SIGNAL, array($this, 'signalHandler'), SIGUSR2);
-    
-        // 设置忽略信号
-        pcntl_signal(SIGTTIN, SIG_IGN);
-        pcntl_signal(SIGTTOU, SIG_IGN);
-        pcntl_signal(SIGQUIT, SIG_IGN);
-        pcntl_signal(SIGPIPE, SIG_IGN);
-        pcntl_signal(SIGCHLD, SIG_IGN);
-        pcntl_signal(SIGHUP, SIG_IGN);
-    }
-    
-    /**
      * 递归删除文件
      * @param string $path
      */