mohammadraufzahed/tondbad-swoole

Tondbād - 基于OpenSwoole的轻量级、高性能PHP框架,具有路由、任务工作者、队列管理和gRPC支持。

v0.0.1 2024-09-19 11:57 UTC

This package is auto-updated.

Last update: 2024-10-01 17:55:53 UTC


README

TondbadSwoole 是一个基于 OpenSwoole 的高性能、轻量级PHP框架,用于创建异步Web应用、微服务和gRPC服务器。它提供强大的路由系统、依赖注入和gRPC支持,是现代PHP应用的理想选择。

特性

  • 由OpenSwoole驱动的异步HTTP服务器。
  • 基于FastRoute的路由系统,具有基于属性的路线定义。
  • 使用自定义容器进行依赖注入,以管理服务和配置。
  • 支持gRPC,用于构建高性能微服务。
  • 集成Monolog进行全面的日志记录到控制台和文件。
  • 优雅关闭以处理系统信号(SIGTERM、SIGINT)并确保平滑终止。

要求

  • PHP 8.2或更高版本
  • OpenSwoole扩展
  • Composer

安装

  1. 克隆仓库:

    git clone https://github.com/yourusername/tondbad-swoole.git
    cd tondbad-swoole
  2. 使用Composer安装依赖项:

    composer install
  3. 安装OpenSwoole:

    pecl install openswoole
  4. 配置环境:

    • 在根目录下创建一个 .env 文件并配置必要的设置。例如
    PORT=8000
    APP_ENV=local
    APP_DEBUG=true

使用方法

运行HTTP服务器

要启动HTTP服务器,请运行以下命令

composer server

这将启动配置的端口的OpenSwoole服务器(默认:8000)。

运行gRPC服务器

要启动gRPC服务器,使用以下命令

composer grpc

这将启动处理gRPC请求的gRPC服务器。

定义路由

可以使用PHP 8属性在您的控制器中定义路由。以下是一个使用 #[Endpoint] 属性的路由定义示例

namespace App\Controllers;

use TondbadSwoole\Core\Route\Attributes\Endpoint;
use OpenSwoole\Http\Request;
use OpenSwoole\Http\Response;

class HomeController
{
    #[Endpoint('GET', '/')]
    public function index(Request $request, Response $response)
    {
        $response->end('Welcome to TondbadSwoole!');
    }

    #[Endpoint('POST', '/submit')]
    public function submit(Request $request, Response $response)
    {
        $response->end('Form Submitted!');
    }
}

注册路由

在您的配置文件(config/routes.php)中列出包含路由定义的类

return [
    \App\Controllers\HomeController::class,
    \App\Controllers\UserController::class,
];

日志记录

TondbadSwoole使用 Monolog 进行日志记录

  • 日志被写入控制台(php://stdout)并存储在文件中(logs/app.log)。
  • 您可以在 LoggerServiceProvider 中配置日志记录设置。

日志级别

默认日志级别是 DEBUG,捕获所有日志级别。您可以在日志记录器配置中更改此级别。

优雅关闭

服务器将在收到 SIGINTCtrl+C)或 SIGTERM 信号时优雅关闭,允许正在进行的请求完成后再停止服务器。

编译协议缓冲区(对于gRPC)

要编译 .proto 文件,请运行以下命令

composer compile-proto

此命令将为gRPC通信生成必要的PHP文件。

即将推出

  • 后台作业处理:下一个版本将包括使用OpenSwoole的TaskWorker进行后台作业处理的支持,允许您在后台有效地处理长时间运行的任务。
  • 队列管理:增强队列管理,用于调度和处理后台任务。

贡献

请随时提交问题或拉取请求以改进此项目。欢迎贡献!

许可

此项目采用MIT许可证。