コード例 #1
0
ファイル: ThriftInstance.php プロジェクト: tonydeng/tcp4p
 /**
  * 获取一个实例
  * @return instance
  */
 protected function __instance()
 {
     // 获取一个服务端节点地址
     $address = AddressManager::getOneAddress($this->serviceName);
     list($ip, $port) = explode(':', $address);
     // Transport
     $socket = new \Thrift\Transport\TSocket($ip, $port);
     //timeout config
     $socket->setSendTimeout($this->sendTimeout);
     $socket->setRecvTimeout($this->recvTimeout);
     $transport_name = ThriftClient::getTransport($this->serviceName);
     $transport = new $transport_name($socket);
     // Protocol
     $protocol_name = ThriftClient::getProtocol($this->serviceName);
     $protocol = new $protocol_name($transport);
     try {
         $transport->open();
     } catch (\Exception $e) {
         // 无法连上,则踢掉这个地址
         AddressManager::kickAddress($address);
         throw $e;
     }
     // 客户端类名称
     $class_name = ThriftClient::getServiceDir($this->serviceName);
     // 类不存在则报出异常
     if (!class_exists($class_name)) {
         throw new \Exception("Class {$class_name} not found in directory {$service_dir}");
     }
     // 初始化一个实例
     return new $class_name($protocol);
 }
コード例 #2
0
 /**
  * 载入thrift生成的客户端文件
  * @throws \Exception
  * @return void
  */
 protected function includeFile()
 {
     // 载入该服务下的所有文件
     $service_dir = ThriftClient::getServiceDir($this->serviceName);
     foreach (glob($service_dir . '/*.php') as $php_file) {
         require_once $php_file;
     }
     return $service_dir;
 }