tijmen-wierenga/async-php-server

快速异步PHP服务器

v0.1.0 2017-07-30 13:22 UTC

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

待办事项