diff --git a/Worker.php b/Worker.php index 3f2b650f9..29bcd327a 100644 --- a/Worker.php +++ b/Worker.php @@ -944,8 +944,8 @@ protected static function parseCommand() if (\is_file($statistics_file)) { @\unlink($statistics_file); } - // Master process will send SIGUSR2 signal to all child processes. - \posix_kill($master_pid, SIGUSR2); + // Master process will send SIGIOT signal to all child processes. + \posix_kill($master_pid, SIGIOT); // Sleep 1 second. \sleep(1); // Clear terminal. @@ -977,7 +977,7 @@ protected static function parseCommand() case 'stop': if ($mode === '-g') { static::$_gracefulStop = true; - $sig = \SIGHUP; + $sig = \SIGQUIT; static::log("Workerman[$start_file] is gracefully stopping ..."); } else { static::$_gracefulStop = false; @@ -1015,9 +1015,9 @@ protected static function parseCommand() break; case 'reload': if($mode === '-g'){ - $sig = \SIGQUIT; - }else{ $sig = \SIGUSR1; + }else{ + $sig = \SIGUSR2; } \posix_kill($master_pid, $sig); exit; @@ -1128,14 +1128,18 @@ protected static function installSignal() \pcntl_signal(\SIGINT, $signalHandler, false); // stop \pcntl_signal(\SIGTERM, $signalHandler, false); - // graceful stop + // stop \pcntl_signal(\SIGHUP, $signalHandler, false); + // stop + \pcntl_signal(\SIGTSTP, $signalHandler, false); + // graceful stop + \pcntl_signal(\SIGQUIT, $signalHandler, false); // reload - \pcntl_signal(\SIGUSR1, $signalHandler, false); + \pcntl_signal(\SIGUSR2, $signalHandler, false); // graceful reload - \pcntl_signal(\SIGQUIT, $signalHandler, false); + \pcntl_signal(\SIGUSR1, $signalHandler, false); // status - \pcntl_signal(\SIGUSR2, $signalHandler, false); + \pcntl_signal(\SIGIOT, $signalHandler, false); // connection status \pcntl_signal(\SIGIO, $signalHandler, false); // ignore @@ -1157,26 +1161,34 @@ protected static function reinstallSignal() \pcntl_signal(\SIGINT, \SIG_IGN, false); // uninstall stop signal handler \pcntl_signal(\SIGTERM, \SIG_IGN, false); - // uninstall graceful stop signal handler + // uninstall stop signal handler \pcntl_signal(\SIGHUP, \SIG_IGN, false); + // uninstall stop signal handler + \pcntl_signal(\SIGTSTP, \SIG_IGN, false); + // uninstall graceful stop signal handler + \pcntl_signal(\SIGQUIT, \SIG_IGN, false); // uninstall reload signal handler - \pcntl_signal(\SIGUSR1, \SIG_IGN, false); + \pcntl_signal(\SIGUSR2, \SIG_IGN, false); // uninstall graceful reload signal handler - \pcntl_signal(\SIGQUIT, \SIG_IGN, false); + \pcntl_signal(\SIGUSR1, \SIG_IGN, false); // uninstall status signal handler - \pcntl_signal(\SIGUSR2, \SIG_IGN, false); + \pcntl_signal(\SIGIOT, \SIG_IGN, false); // uninstall connections status signal handler \pcntl_signal(\SIGIO, \SIG_IGN, false); // reinstall stop signal handler static::$globalEvent->add(\SIGINT, EventInterface::EV_SIGNAL, $signalHandler); // reinstall graceful stop signal handler + static::$globalEvent->add(\SIGQUIT, EventInterface::EV_SIGNAL, $signalHandler); + // reinstall graceful stop signal handler static::$globalEvent->add(\SIGHUP, EventInterface::EV_SIGNAL, $signalHandler); + // reinstall graceful stop signal handler + static::$globalEvent->add(\SIGTSTP, EventInterface::EV_SIGNAL, $signalHandler); // reinstall reload signal handler - static::$globalEvent->add(\SIGUSR1, EventInterface::EV_SIGNAL, $signalHandler); + static::$globalEvent->add(\SIGUSR2, EventInterface::EV_SIGNAL, $signalHandler); // reinstall graceful reload signal handler - static::$globalEvent->add(\SIGQUIT, EventInterface::EV_SIGNAL, $signalHandler); + static::$globalEvent->add(\SIGUSR1, EventInterface::EV_SIGNAL, $signalHandler); // reinstall status signal handler - static::$globalEvent->add(\SIGUSR2, EventInterface::EV_SIGNAL, $signalHandler); + static::$globalEvent->add(\SIGIOT, EventInterface::EV_SIGNAL, $signalHandler); // reinstall connection status signal handler static::$globalEvent->add(\SIGIO, EventInterface::EV_SIGNAL, $signalHandler); } @@ -1192,23 +1204,25 @@ public static function signalHandler($signal) // Stop. case \SIGINT: case \SIGTERM: + case \SIGHUP: + case \SIGTSTP; static::$_gracefulStop = false; static::stopAll(); break; // Graceful stop. - case \SIGHUP: + case \SIGQUIT: static::$_gracefulStop = true; static::stopAll(); break; // Reload. - case \SIGQUIT: case \SIGUSR1: - static::$_gracefulStop = $signal === \SIGQUIT; + case \SIGUSR2: + static::$_gracefulStop = $signal === \SIGUSR1; static::$_pidsToRestart = static::getAllWorkerPids(); static::reload(); break; // Show status. - case \SIGUSR2: + case \SIGIOT: static::writeStatisticsToStatusFile(); break; // Show connection status. @@ -1753,9 +1767,9 @@ protected static function reload() } if (static::$_gracefulStop) { - $sig = \SIGQUIT; - } else { $sig = \SIGUSR1; + } else { + $sig = \SIGUSR2; } // Send reload signal to all child processes. @@ -1832,7 +1846,7 @@ public static function stopAll($code = 0, $log = '') $worker_pid_array = static::getAllWorkerPids(); // Send stop signal to all child processes. if (static::$_gracefulStop) { - $sig = \SIGHUP; + $sig = \SIGQUIT; } else { $sig = \SIGINT; } @@ -1965,7 +1979,7 @@ protected static function writeStatisticsToStatusFile() \chmod(static::$_statisticsFile, 0722); foreach (static::getAllWorkerPids() as $worker_pid) { - \posix_kill($worker_pid, \SIGUSR2); + \posix_kill($worker_pid, \SIGIOT); } return; }