5.Http Server

1.Swoole Http Server

http server 基于 swoole_server , 在 swoole_server 基础上,
增加了 http 协议的解析, 并且把 http 协议的请求部分,封装成了 Request 对象.
将 http 协议的响应封装成 Response 对象。

 

 

2.swoole_http_server

swoole_http_server 相较于原本的 swoole_server , 新增了一个 onRequest() 回调函数.
这个函数用于处理来自客户端的 http 请求。

swoole_http_server 不再接受 onReceive 回调,只能使用 onRequest() 回调.

$request/$response 对象传递给其他函数时,不要加 & 引用符号。这是因为在 swoole 的底层实现中,这2个对象,
每个请求过来,都会新 new 一个 request 对象,和 response 对象。当我们使用引用符号将这2个对象传递出去的时候,
这2个对象的引用计数会+1, 如果请求结束之后,我们没有及时的释放引用,那么在这个请求结束之后,对象不会被销毁。会造成内存泄漏。

 

 

 

3.swoole_http_requesst

 

 

 

 

 

4.swoole_http_response

 

 

 

header,cookie,status,gzip 这4个函数要在 end 函数之前使用。
write,sendfile 底层会自动调用 end .
在 调用 end 函数之后,如果浏览器没有开始 keepalive , 这个连接就会断开。
如果开启了,这个连接就会被保持用于下次请求。
$serv = new swoole_http_server('127.0.0.1', 9502);

$serv->on('Request', function($request, $response) {
    var_dump($request->get);
    var_dump($request->post);
    var_dump($request->cookie);
    var_dump($request->files);
    var_dump($request->header);
    var_dump($request->server);

    $response->cookie('User', 'Swoole');
    $response->header('X-Server', 'Swoole');
    $response->end('<h1>Hello,Swoole</h1>');
});

$serv->start();

// 注意
// 除了 header 和 server 外, 其他4个变量可能没有赋值,因此使用前需要用 isset 判定

 

 

 

 

 

 

用 Nginx 做反向代理:

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值