luzrain/phprunner

此包已被废弃,不再维护。作者建议使用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是一个基于事件循环的高性能进程管理器、调度器和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