tijmen-wierenga / async-php-server
快速异步PHP服务器
v0.1.0
2017-07-30 13:22 UTC
Requires
- nathanmac/parser: ^4.3
- react/http: ^0.7.2
Requires (Dev)
- phpunit/phpunit: ^6.2
- symfony/var-dumper: ^3.3
This package is auto-updated.
Last update: 2024-09-16 20:24:23 UTC
README
此软件包包含一个易于使用的异步PHP服务器,您可以在几分钟内将其设置好。摆脱每次请求都启动整个应用程序的烦恼!
服务器使用出色的React PHP组件构建,这使您能够加快应用程序的速度。只需对您的应用程序进行一次必要的启动,并在内存中保持它,因为所有请求都是以异步方式处理的。
安装
有两种方式可以安装服务器
手动
使用GIT安装存储库
git clone https://github.com/TijmenWierenga/async-php-server.git
Composer
composer require tijmen-wierenga/async-php-server
示例
此存储库包含一个示例服务器,您可以在本地运行。要运行示例服务器,只需在php中运行它即可
php example/demo-server.php
或者使用Docker运行它(确保将正确的卷挂载到容器中)
docker run \
--rm \
-t \
-d \
-v ~/www/server:/var/www/html \
--name async_php_server \
php:7.1-fpm-alpine \
php /var/www/html/example/demo-server.php
要检查服务器是否正在运行,请检查日志
docker logs async_php_server
应该打印:服务器正在0.0.0.0:9000上运行
要测试服务器,只需向容器发送一个CURL命令
docker exec async_php_server curl -H "Content-Type: application/json" -X POST -d '{"name":"tijmen","age":30}' https://:9000
如果一切正常,您将收到包含已发布数据的200 OK
JSON响应。
用法
为了运行异步服务器,您需要传递三个必需的实例
- 连接
- 请求处理器
- 解析器
连接
连接对于服务器知道要绑定到的是必要的。创建一个新的连接实例,并指定端口和IP地址
$connection = \TijmenWierenga\Server\Connection::init(9000, '0.0.0.0');
请求处理器
请求处理器基本上是应用程序的包装器。handle方法接收请求并应返回一个响应(即使在错误的情况下)。您可以在下面找到一个非常简单的请求处理器示例
class HelloWorld implements TijmenWierenga\Server\RequestHandler { public function handle(ServerRequestInterface $request): ResponseInterface { return new Response(200, ['Content-Type' => 'text/plain'], "Hello World!"); } }
此请求处理器在收到请求时将始终响应“Hello World!”。
解析器
解析器用于解析请求和响应正文。解析器可以将任何给定的数据格式化为特定格式。此软件包包含一个DefaultParser类,它是nathanmac/parser的包装器类。按照以下方式实例化DefaultParser
$parser = new TijmenWierenga\Server\DefaultParser(new \Nathanmac\Utilities\Parser\Parser());
整合一切
$server = new TijmenWierenga\Server\AsyncServer($connection, $requestHandler, $parser); $server->run();
已知问题
- 服务器只能处理一定数量的内容类型
- 服务器无法处理文件上传
Docker
待办事项