在这之间,咱们讨论了异步风格HTTP服务器,它继承自异步风格的TCP服务器,有着异步风格的全部优势,同时若是碰到了大量的IO等待也会存在阻塞的缺点。php
而协程风格的HTTP则很好处理了IO等待的问题。这里要注意彻底协程化的 HTTP 服务器实现,Co\Http\Server 因为 HTTP 解析性能缘由使用 C++ 编写,所以并不是由 PHP 编写的 Co\Server 的子类。html
一、成员函数web
__construct():构造函数编程
Swoole\Coroutine\Http\Server::__construct(string $host, int $port = 0, bool $ssl = false, bool $reuse_port = false);
$host:监听的 IP 地址【如果本地 UNIXSocket 则应以形如 unix://tmp/xxx.sock 的格式填写 】服务器
$port:监听端口,可选0~65535websocket
$ssl:是否启用 SSL/TLS 隧道加密dom
$reuse_port:是否启用端口复用特性,开启后多个服务能够共用一个端口异步
handle():注册回调函数以处理参数 $pattern 所指示路径下的 HTTP 请求。socket
Swoole\Coroutine\Http\Server->handle(string $pattern, callable $fn): void
$pattern:设置 URL 路径【如 /index.html,注意这里不能传入 http://domain】函数
$fn:处理函数,用法参考 Swoole\Http\Server 中的 OnRequest 回调
注意:该函数必须在 Server::start 以前设置处理函数
二、完整示例:
Co\run(function () { $server = new Co\Http\Server("127.0.0.1", 9502, false); $server->handle('/', function ($request, $response) { $response->end("<h1>Index</h1>"); }); $server->handle('/test', function ($request, $response) { $response->end("<h1>Test</h1>"); }); $server->handle('/stop', function ($request, $response) use ($server) { $response->end("<h1>Stop</h1>"); $server->shutdown(); }); $server->start(); });
协程风络的HTTP服务器就是这么简单。下一期开始,咱们一块儿进行websocket服务器。
2020过得好快啊,明天就是11月份了。
--------------------------- 我是可爱的分割线 ----------------------------
最后博主借地宣传一下,漳州编程小组招新了,这是一个面向漳州青少年信息学/软件设计的学习小组,有意向的同窗点击连接,联系我吧。