背景
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文件中。
评论已关闭