ensi / octane-swoole-urgent-starter

Laravel octane swoole 紧急启动器

2.0.2 2024-06-26 10:27 UTC

This package is auto-updated.

Last update: 2024-08-27 08:49:30 UTC


README

Latest Version on Packagist Tests Total Downloads

此包为 octane 服务器添加了开发和生产使用的替代行为。
开发:即使在代码中出现语法错误,服务器进程也会继续工作。
生产:可以直接启动 swoole 主进程,无需 artisan 命令,这会消耗一些内存。

安装

您可以通过 composer 安装此包

composer require ensi/octane-swoole-urgent-starter

并将此部分添加到 config/octane.php 文件中

'swoole' => [
    'command' => '/var/www/vendor/bin/urgent-swoole-server',
    'show_fatal_error' => env('OCTANE_SHOW_FATAL_ERROR', false),
]

版本兼容性

基本用法

开发

只需使用 swoole 后端和 --watch 选项启动 octane 服务器,然后查看它如何在出现非常严重的错误后重新加载。
如果您想在 http 响应中看到错误消息,请将 OCTANE_SHOW_FATAL_ERROR 环境变量设置为 true

生产

最初,octane:start 命令创建服务器状态文件,然后以子进程的形式启动 swoole 进程。
现在,您可以将其分为两个步骤。
第一步:使用 octane:dump-server-state 命令保存服务器状态文件。
第二步:启动 swoole 进程,没有无用的父进程。

php artisan octane:dump-server-state --host=0.0.0.0 --port=8000 --workers=20

export APP_ENV=production
export APP_BASE_PATH=/var/www
export LARAVEL_OCTANE=1

php ./vendor/bin/swoole-server /var/www/storage/logs/octane-server-state.json

当服务在 ELC 工作空间中工作时

旧的 elc 工作空间模板使用了一种在容器重启前重新加载代码的技巧。您应该将 templates/swoole-X.X/php/entrypoint 中的最后一个 artisan 命令替换为以下内容

OCTANE_SHOW_FATAL_ERROR=true php artisan octane:swoole --watch --host=0.0.0.0 --workers=1 --task-workers=1 || sleep 3600

贡献

有关详细信息,请参阅 CONTRIBUTING

测试

  1. composer install
  2. composer test

安全漏洞

请审查 我们的安全策略,了解如何报告安全漏洞。

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件