icicleio / http
Icicle 的异步 HTTP 组件。
v0.3.0
2016-03-08 23:37 UTC
Requires
- icicleio/dns: ^0.6
- icicleio/icicle: ^0.9.1
- icicleio/log: ^0.1
- icicleio/socket: ^0.5.2
- icicleio/stream: ^0.5.3
Requires (Dev)
- mockery/mockery: ^0.9
- phpunit/phpunit: ^4.8
- symfony/yaml: ^2.7
This package is auto-updated.
Last update: 2024-09-14 03:21:21 UTC
README
异步、非阻塞的 HTTP/1.1 客户端和服务器。
这个库是 Icicle 的一个组件,它提供了 HTTP/1.1 服务器和客户端实现。像其他 Icicle 组件一样,这个库使用由 协程 和 可等待对象 以及 生成器 构建而成的协程,使得编写异步代码更类似于编写同步代码。
文档和支持
要求
- PHP 5.5+(v0.3.x 分支,当前稳定版)和 v1.x 分支(镜像当前稳定版)
- PHP 7(v2.0 master 分支)支持生成器委派和返回表达式
建议
- openssl 扩展:创建 HTTPS 服务器或通过 HTTPS 发送请求时必需。
安装
推荐的安装方式是使用 Composer 包管理器。(有关安装和使用的更多信息,请参阅 Composer 安装指南。)
运行以下命令以在项目中使用此库
composer require icicleio/http
您也可以手动编辑 composer.json
,将此库添加为项目依赖项。
// composer.json { "require": { "icicleio/http": "^0.3" } }
示例
以下示例创建了一个简单的 HTTP 服务器,对每个请求都返回 Hello, world!
。
#!/usr/bin/env php <?php require '/vendor/autoload.php'; use Icicle\Http\Message\{BasicResponse, Request, Response}; use Icicle\Http\Server\{RequestHandler, Server}; use Icicle\Socket\Socket; use Icicle\Loop; $server = new Server(new class implements RequestHandler { public function onRequest(Request $request, Socket $socket) { $response = new BasicResponse(Response::OK, [ 'Content-Type' => 'text/plain', ]); yield from $response->getBody()->end('Hello, world!'); yield $response; } public function onError($code, Socket $socket) { return new BasicResponse($code); } }); $server->listen(8080); Loop\run();