/** * 创建监听套接字 * @return void */ protected static function createSocketsAndListen() { // 循环读取配置创建socket foreach (PHPServerConfig::get('workers') as $worker_name => $config) { if (!isset($config['protocol']) || !isset($config['port'])) { continue; } $flags = $config['protocol'] == 'udp' ? STREAM_SERVER_BIND : STREAM_SERVER_BIND | STREAM_SERVER_LISTEN; $ip = isset($config['ip']) ? $config['ip'] : "0.0.0.0"; $error_no = 0; $error_msg = ''; // 创建监听socket self::$listenedSockets[$worker_name] = stream_socket_server("{$config['protocol']}://{$ip}:{$config['port']}", $error_no, $error_msg, $flags); if (!self::$listenedSockets[$worker_name]) { ServerLog::add("can not create socket {$config['protocol']}://{$ip}:{$config['port']} info:{$error_no} {$error_msg}\tServer start fail"); exit("\n[31;40mcan not create socket {$config['protocol']}://{$ip}:{$config['port']} info:{$error_no} {$error_msg}[0m\n\n[31;40mServer start fail[0m\n\n"); } } // 创建telnet监听socket Telnet::bindAndListen('0.0.0.0', 10101, self::$event); }