luzrain / phpstreamserver
高性能 PHP 应用程序服务器
v0.2.2
2024-05-15 15:52 UTC
Requires
- php: >=8.2
- ext-pcntl: *
- ext-posix: *
- psr/http-message: ^2.0
- psr/log: ^3.0
- revolt/event-loop: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.46
- guzzlehttp/guzzle: ^7.8
- phpunit/phpunit: ^10.4
- symfony/var-dumper: ^6.4
- vimeo/psalm: 5.16.*
Suggests
- ext-uv: For better performance
This package is auto-updated.
Last update: 2024-09-21 15:36:23 UTC
README
PHPStreamServer - PHP 应用程序服务器
注意
此包目前正在开发中
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