Swoole从入门到入土(14)——HTTP服务器[协程风格]

文章介绍了Swoole的协程风格HTTP服务器,它解决了IO等待问题,提供了构造函数和handle方法来注册处理函数。示例展示了如何创建并启动一个简单的协程HTTP服务器,监听不同路径的请求。此外,文章预告将探讨WebSocket服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这之间,我们讨论了异步风格HTTP服务器,它继承自异步风格的TCP服务器,有着异步风格的所有优点,同时如果碰到了大量的IO等待也会存在阻塞的缺点。

而协程风格的HTTP则很好处理了IO等待的问题。这里要注意完全协程化的 HTTP 服务器实现,Co\Http\Server 由于 HTTP 解析性能原因使用 C++ 编写,因此并非由 PHP 编写的 Co\Server 的子类。

1、成员函数

__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~65535

$ssl:是否启用 SSL/TLS 隧道加密

$reuse_port:是否启用端口复用特性,开启后多个服务可以共用一个端口

handle():注册回调函数以处理参数 $pattern 所指示路径下的 HTTP 请求。

Swoole\Coroutine\Http\Server->handle(string $pattern, callable $fn): void

$pattern:设置 URL 路径【如 /index.html,注意这里不能传入 http://domain】

$fn:处理函数,用法参考 Swoole\Http\Server 中的 OnRequest 回调

注意:该函数必须在 Server::start 之前设置处理函数

2、完整示例:

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服务器。

下一篇:Swoole从入门到入土(15)——WebSocket服务器[初步接触]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值