/** * Fork some worker processes. * @return void */ protected static function forkWorkers() { foreach (self::$_workers as $worker) { if (self::$_status === self::STATUS_STARTING) { if (empty($worker->name)) { $worker->name = $worker->getSocketName(); } $worker_name_length = strlen($worker->name); if (self::$_maxWorkerNameLength < $worker_name_length) { self::$_maxWorkerNameLength = $worker_name_length; } } while (count(self::$_pidMap[$worker->workerId]) < $worker->count) { static::forkOneWorker($worker); } } }
/** * 初始化所有的worker实例,主要工作为获得格式化所需数据及监听端口 * @return void */ protected static function initWorkers() { foreach (self::$_workers as $worker) { // 没有设置worker名称,则使用none代替 if (empty($worker->name)) { $worker->name = 'none'; } // 获得所有worker名称中最大长度 $worker_name_length = strlen($worker->name); if (self::$_maxWorkerNameLength < $worker_name_length) { self::$_maxWorkerNameLength = $worker_name_length; } // 获得所有_socketName中最大长度 $socket_name_length = strlen($worker->getSocketName()); if (self::$_maxSocketNameLength < $socket_name_length) { self::$_maxSocketNameLength = $socket_name_length; } $user_name_length = strlen($worker->user); if (self::$_maxUserNameLength < $user_name_length) { self::$_maxUserNameLength = $user_name_length; } } }
/** * 创建子进程 * @return void */ protected static function forkWorkers() { /** @var static $worker */ foreach (self::$_workers as $worker) { // 启动过程中需要得到运行用户名的最大长度,在status时格式化展示 if (self::$_status === self::STATUS_STARTING) { if (empty($worker->name)) { $worker->name = $worker->getSocketName(); } $worker_name_length = strlen($worker->name); if (self::$_maxWorkerNameLength < $worker_name_length) { self::$_maxWorkerNameLength = $worker_name_length; } } // 创建子进程 while (count(self::$_pidMap[$worker->workerId]) < $worker->count) { static::forkOneWorker($worker); } } }