luzrain / phprunner
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是一个基于事件循环的高性能进程管理器、调度器和web服务器,使用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