mohammadraufzahed / tondbad-swoole
Tondbād - 基于OpenSwoole的轻量级、高性能PHP框架,具有路由、任务工作者、队列管理和gRPC支持。
v0.0.1
2024-09-19 11:57 UTC
Requires
- php: >=8.2
- ext-openswoole: *
- google/protobuf: dev-master
- grpc/grpc: dev-master
- monolog/monolog: ^3.0@dev
- nikic/fast-route: ^2.0@dev
- openswoole/core: ^22.1.5
- openswoole/grpc: dev-master
- openswoole/ide-helper: dev-master
README
TondbadSwoole 是一个基于 OpenSwoole 的高性能、轻量级PHP框架,用于创建异步Web应用、微服务和gRPC服务器。它提供强大的路由系统、依赖注入和gRPC支持,是现代PHP应用的理想选择。
特性
- 由OpenSwoole驱动的异步HTTP服务器。
- 基于FastRoute的路由系统,具有基于属性的路线定义。
- 使用自定义容器进行依赖注入,以管理服务和配置。
- 支持gRPC,用于构建高性能微服务。
- 集成Monolog进行全面的日志记录到控制台和文件。
- 优雅关闭以处理系统信号(SIGTERM、SIGINT)并确保平滑终止。
要求
- PHP 8.2或更高版本
- OpenSwoole扩展
- Composer
安装
-
克隆仓库:
git clone https://github.com/yourusername/tondbad-swoole.git cd tondbad-swoole
-
使用Composer安装依赖项:
composer install
-
安装OpenSwoole:
pecl install openswoole
-
配置环境:
- 在根目录下创建一个
.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
,捕获所有日志级别。您可以在日志记录器配置中更改此级别。
优雅关闭
服务器将在收到 SIGINT
(Ctrl+C
)或 SIGTERM
信号时优雅关闭,允许正在进行的请求完成后再停止服务器。
编译协议缓冲区(对于gRPC)
要编译 .proto
文件,请运行以下命令
composer compile-proto
此命令将为gRPC通信生成必要的PHP文件。
即将推出
- 后台作业处理:下一个版本将包括使用OpenSwoole的TaskWorker进行后台作业处理的支持,允许您在后台有效地处理长时间运行的任务。
- 队列管理:增强队列管理,用于调度和处理后台任务。
贡献
请随时提交问题或拉取请求以改进此项目。欢迎贡献!
许可
此项目采用MIT许可证。