luzrain/phpstreamserver

高性能 PHP 应用程序服务器

v0.2.2 2024-05-15 15:52 UTC

This package is auto-updated.

Last update: 2024-09-21 15:36:23 UTC


README

PHPStreamServer - PHP 应用程序服务器

PHP >=8.2 Version Tests Status

注意

此包目前正在开发中

PHPStreamServer 是一个基于事件循环的高性能进程管理器、调度器和由 PHP 编写的网络服务器。此应用程序服务器旨在替代运行 PHP 应用程序的传统设置,例如 nginx、php-fpm、cron、supervisor。

关键特性

  • 进程管理器;
  • 调度器;
  • 工作进程生命周期管理(通过 TTL、最大内存、最大请求数、异常时、每次请求时重新加载);
  • HTTP/2

要求和限制

  • 基于 Unix 的操作系统(不支持 Windows);
  • php-posix 和 php-pcntl 扩展;
  • php-uv 扩展不是必需的,但为了更好的性能推荐使用。

入门

安装 composer 包

$ composer require luzrain/phpstreamserver

配置服务器

以下是一个简单的 HTTP 服务器示例。

// server.php

use Amp\Http\Server\HttpErrorException;
use Amp\Http\Server\Request;
use Amp\Http\Server\RequestHandler\ClosureRequestHandler;
use Amp\Http\Server\Response;
use Luzrain\PHPStreamServer\Plugin\HttpServer\HttpServerModule;
use Luzrain\PHPStreamServer\Plugin\HttpServer\Listen;
use Luzrain\PHPStreamServer\Server;
use Luzrain\PHPStreamServer\WorkerProcess;

$server = new Server();

$server->addWorkerProcess(new WorkerProcess(
    name: 'HTTP Server',
    onStart: function (WorkerProcess $worker) {
        $requestHandler = new ClosureRequestHandler(function (Request $request) : Response {
            return match ($request->getUri()->getPath()) {
                '/' => new Response(body: 'Hello world'),
                '/ping' => new Response(body: 'pong'),
                default => throw new HttpErrorException(404),
            };
        });

        $worker->startWorkerModule(new HttpServerModule(
            listen: new Listen(listen: '0.0.0.0:8087'),
            requestHandler: $requestHandler,
        ));
    },
));

exit($server->run());

运行

$ php server.php start