/** * 停止服务 * @return void */ public static function stop() { // 如果没有子进程则直接退出 $all_worker_pid = self::getPidWorkerNameMap(); if (empty($all_worker_pid)) { exit(0); } // 标记server开始关闭 self::$serverStatus = self::STATUS_SHUTDOWN; // killWorkerTimeLong 秒后如果还没停止则强制杀死所有进程 Lib\Task::add(self::KILL_WORKER_TIME_LONG, array('\\Man\\Core\\Master', 'stopAllWorker'), array(true), false); // 停止所有worker self::stopAllWorker(); }
/** * 服务运行 * @return void */ public static function run() { // 输出信息 self::notice("Workerman is starting ...", true); // 初始化 self::init(); // 检查环境 self::checkEnv(); // 执行各个项目启动前脚本 self::beforeStart(); // 创建监听套接字 self::createSocketsAndListen(); // 创建worker进程 self::createWorkers(); // 输出信息 self::notice("Workerman start success ...", true); // 标记sever状态为运行中... self::$serverStatus = self::STATUS_RUNNING; // 主循环 self::loop(); }