예제 #1
0
 /**
  * 创建监听套接字
  * @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("\ncan not create socket {$config['protocol']}://{$ip}:{$config['port']} info:{$error_no} {$error_msg}\n\nServer start fail\n\n");
         }
     }
     // 创建telnet监听socket
     Telnet::bindAndListen('0.0.0.0', 10101, self::$event);
 }