yiisoft/yii-runner-roadrunner

适用于 RoadRunner 的 Web 应用程序运行器

3.0.1 2024-04-23 13:00 UTC

This package is auto-updated.

Last update: 2024-08-25 14:01:46 UTC


README

Yii

Yii RoadRunner 运行器


Latest Stable Version Total Downloads Build status Scrutinizer Code Quality Code Coverage Mutation testing badge static analysis type-coverage

该包包含一个用于使用 RoadRunner 运行 Yii3 应用的引导程序。

要求

  • PHP 8.1 或更高版本。

安装

可以使用 Composer 安装该包

composer require yiisoft/yii-runner-roadrunner

通用用法

获取 RoadRunner

./vendor/bin/rr get

在应用程序根目录中创建 worker.php

use Yiisoft\Yii\Runner\RoadRunner\RoadRunnerHttpApplicationRunner;

ini_set('display_errors', 'stderr');

require_once __DIR__ . '/autoload.php';

(new RoadRunnerHttpApplicationRunner(
    rootPath: __DIR__, 
    debug: $_ENV['YII_DEBUG'], 
    checkEvents: $_ENV['YII_DEBUG'], 
    environment: $_ENV['YII_ENV']
))->run();

在您的 .rr.yaml 中指定它

version: '3'
server:
    command: "php ./worker.php"

rpc:
    listen: tcp://127.0.0.1:6001

http:
    address: :8082
    pool:
        num_workers: 8
        # Debug mode for the pool. In this mode, pool will not pre-allocate the worker.
        # Worker (only 1, num_workers ignored) will be allocated right after the request arrived.
        debug: false
    middleware: ["static", "headers"]
    static:
        dir:   "./public"
        forbid: [".php", ".htaccess"]
    headers:
        response:
            "Cache-Control": "no-cache"

logs:
    mode: production
    level: warn

注意:官方 配置参考。您还可以在您的 IDE 中激活 RoadRunner 架构以获取自动完成提示。

使用指定的配置运行 RoadRunner

./rr serve

附加配置

默认情况下,RoadRunnerHttpApplicationRunner 配置为与 Yii 应用程序模板一起工作,并遵循 配置组约定

您可以使用构造函数参数和不可变设置器来覆盖默认配置。

构造函数参数

$rootPath — 项目根目录的绝对路径。

$debug — 是否启用调试模式。

$checkEvents — 是否检查事件配置。

$environment — 环境名称。

$bootstrapGroup — 引导配置组名称。

$eventsGroup — 事件配置组名称。

$diGroup — 容器定义配置组名称。

$diProvidersGroup — 容器提供者配置组名称。

$diDelegatesGroup — 容器代表配置组名称。

$diTagsGroup — 容器标签配置组名称。

$paramsGroup — 配置参数组名称。

$nestedParamsGroups — 包含到配置参数组中的配置组名称。这是递归合并参数所需的。

$nestedEventsGroups — 包含到事件配置组中的配置组名称。这是反向和递归合并事件配置所需的。

不可变设置器

如果配置实例设置与默认设置不同,您可以指定自定义配置实例

/**
 * @var Yiisoft\Config\ConfigInterface $config
 * @var Yiisoft\Yii\Runner\RoadRunner\RoadRunnerHttpApplicationRunner $runner
 */

$runner = $runner->withConfig($config);

默认容器是 Yiisoft\Di\Container。但您也可以指定任何实现 Psr\Container\ContainerInterface 的实现。

/**
 * @var Psr\Container\ContainerInterface $container
 * @var Yiisoft\Yii\Runner\RoadRunner\RoadRunnerHttpApplicationRunner $runner
 */

$runner = $runner->withContainer($container);

除了容器中定义的错误处理器外,运行器还使用一个临时错误处理器。需要临时错误处理器来处理配置和容器实例的创建,然后使用您在应用程序配置中配置的错误处理器。

默认情况下,临时错误处理器使用 HTML 渲染器并将日志记录到文件中。您可以按照以下方式覆盖此设置

/**
 * @var Psr\Log\LoggerInterface $logger
 * @var Yiisoft\ErrorHandler\Renderer\PlainTextRenderer $renderer
 * @var Yiisoft\Yii\Runner\RoadRunner\RoadRunnerHttpApplicationRunner $runner
 */

$runner = $runner->withTemporaryErrorHandler(
    new Yiisoft\ErrorHandler\ErrorHandler($logger, $renderer),
);

您还可以使用自己的 Spiral\RoadRunner\Http\PSR7WorkerInterface 实现(默认是 Spiral\RoadRunner\Http\PSR7Worker

/**
 * @var Spiral\RoadRunner\Http\PSR7WorkerInterface $psr7Worker
 * @var Yiisoft\Yii\Runner\RoadRunner\RoadRunnerHttpApplicationRunner $runner
 */

$runner = $runner->withPsr7Worker($psr7Worker);

文档

如果您需要帮助或有任何问题,Yii 论坛是寻求帮助的好地方。您还可以查看其他Yii 社区资源

许可证

Yii RoadRunner 运行器是免费软件。它遵循BSD许可证条款发布。有关更多信息,请参阅LICENSE

Yii 软件维护。

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack