UdsPipeTun使用教程

@李彪  June 12, 2018

背景

NetPipeTun是一个转发HTTP请求的中间件,因为传统的HTTP请求速度很慢,PHP对于Keep-alive支持的力度又不够,此中间件把用户GET或者POST请求序列化为完整的HTTP数据包、并把数据包通过Unix domain socket等高速通路进行传送,达到快速通信的目的。

结构描述

中间件结构包括client、config、exception、http、reponse、request、TunClient七个组件。

  • client:针对客户端的支持文件,包括客户端配置和客户端接口。
  • config:针对请求的配置文件,包括请求配置文件样例、请求配置解析器。
  • exception:异常组件,主要对于框架运行过程中的异常进行跟踪、包括客户端异常、数据包异常、异常列表。
  • http:http数据包组件,包括HTTP数据包的封包与解包操作。
  • reponse:请求响应组件,主要针对HTTP请求响应做解析工作。
  • TunClient:Client组件的实现类, 请求对象的直接实现体。

使用教程

1.引入loader文件及安装Pecl扩展

统一加载文件为loader.php,在PHP代码文件的最上方引入此文件进行框架加载。

require_once '../package/loader.php';

NetPipeTun使用Pecl/Http扩展进行数据包的封包与解包操作,请安装3.2.0RC1版本

2.实例化请求对象

$Client = new TunClient([
    'base_uri' => 'http://www.looake.com:8081',
    'timeout' => 2
]);

3. 发送请求

参考Guzzle请求模型,发送请求有两类请求方式,一种是根据特定的get、post函数进行数据请求,类似于:

try {
   $response = $Client->post('http://www.looake.com/Test/post',[],['data' => 123]);
    var_dump($response->getBody());
} catch (HttpPackException $ex) {
    print $ex->toString()."\n";
    die;
}catch (ClientException $ex){
    print $ex->toString()."\n";
    die;
}

另外一种是request模式,通过设置请求方式,来发送不同的数据请求。

try {
   $response = $Client->request('POST', '/Test/post', [], ['data' => 1233]);
    var_dump($response->getBody());
} catch (HttpPackException $ex) {
    print $ex->toString()."\n";
    die;
}catch (ClientException $ex){
    print $ex->toString()."\n";
    die;
}

4.异常处理

框架目前提供两类异常、一类是HttpPackException,主要针对于数据包的封包、解包过程中可能发生的错误;另外一种是ClientException,主要针对Client端工作中可能存在的错误。

5.UDS配置

Unix domain socket路径文件通过读取配置文件来实时获取、配置文件的路径存储于client目录下的Clientconfig.php文件中。

项目地址:https://github.com/gitsrc/UdsPipeTun


评论已关闭