/** * 根据配置文件创建Workers * @return void */ protected static function createWorkers() { // 循环读取配置创建一定量的worker进程 foreach (Lib\Config::getAllWorkers() as $worker_name => $config) { // 初始化 if (empty(self::$workerPids[$worker_name])) { self::$workerPids[$worker_name] = array(); } while (count(self::$workerPids[$worker_name]) < $config['start_workers']) { $pid = self::forkOneWorker($worker_name); // 子进程退出 if ($pid == 0) { self::notice("CHILD EXIT ERR"); } } } }
/** * 根据配置文件创建Workers * @return void */ protected static function spawnWorkers() { // 生成一定量的worker进程 foreach (Lib\Config::getAllWorkers() as $worker_name => $config) { // 初始化 if (empty(self::$workerPidMap[$worker_name])) { self::$workerPidMap[$worker_name] = array(); } while (count(self::$workerPidMap[$worker_name]) < $config['start_workers']) { // 子进程退出 if (self::createOneWorker($worker_name) == 0) { self::notice("Worker exit unexpected"); exit(500); } } } }
/** * 根据配置文件创建Workers * @return void */ protected static function createWorkers() { require_once WORKERMAN_ROOT_DIR . 'Core/ThreadWorker.php'; $workers = Lib\Config::getAllWorkers(); foreach ($workers as $worker_name => $config) { $main_socket = isset(self::$listenedSockets[$worker_name]) ? self::$listenedSockets[$worker_name] : null; $worker_file = \Man\Core\Lib\Config::get($worker_name . '.worker_file'); self::$threads[$worker_name] = new \Pool($config['start_workers'], '\\Man\\Core\\Worker', array($main_socket, $worker_file, $worker_name)); for ($i = 0; $i < $config['start_workers']; $i++) { self::$threads[$worker_name]->submit(new ThreadWorker()); } } }