kcloze / swoole-jobs
基于swoole的job调度组件,类似gearman的分布式任务处理系统
5.0
2022-11-30 06:26 UTC
Requires
- php: >=8.0
- ext-redis: *
- ext-swoole: >=4.8
- bramus/router: ^1.6
- guzzlehttp/guzzle: ^7.5
- symfony/console: ^6.1
Requires (Dev)
- phpunit/phpunit: ^4.8.35 || ^5.7
- dev-master
- 5.0
- v4.2.0
- v4.1.x-dev
- v4.1.5
- v4.1.4
- v4.1.3
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.x-dev
- v4.0.2
- v4.0.1
- v4.0.0.x-dev
- v4.0.0
- v3.2
- v3.1
- v3.0.5.1
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.6.4.4
- v2.6.4.3
- v2.6.4.2
- v2.6.4.1
- v2.6.4
- v2.6.3.5
- v2.6.3.4
- v2.6.3.3
- v2.6.3.2
- v2.6.3.1
- v2.6.3
- v2.6.2
- v2.6.1
- v2.6.0
- v2.5.7
- v2.5.6
- v2.5.5
- v2.5.4
- v2.5.3.4
- v2.5.3.3
- v2.5.3.2
- v2.5.3.1
- v2.5.3
- v2.5.2
- v2.5.1
- v2.5.0
- v2.4.7
- v2.4.6
- v2.4.5.2
- v2.4.5.1
- v2.4.5
- v2.4.4
- v2.4.3
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.x-dev
- v2.3.6.x-dev
- v2.3.6
- v2.3.5
- v2.3.4
- v2.3.3
- v2.3.2
- v2.3.1
- v2.3.0.x-dev
- v2.3.0
- v2.2.1
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.1
- v1.0.1
- v1.0.0
- dev-dev
- dev-daydaygo-master
This package is auto-updated.
Last update: 2024-08-29 04:31:12 UTC
README
中文介绍
- 类似gearman的分布式任务处理系统,基于swoole
- 高性能/动态多进程消耗队列,加速后台耗时服务
- 无需配置像gearman worker那样的crontab,swoole-jobs负责管理所有worker状态
- 支持通过HTTP API(swoole http server)推送队列,不依赖于php-fpm
1. 说明
- 网页中较慢的逻辑,如统计、/电子邮件/短信/图片处理等。
- 支持redis/rabbitmq/zeromq或其他队列消息存储。
- 比Yii / laravel框架本身更稳定、更快。
- 提供yii2/phalcon/yaf/ThinkPHP5集成示例,其他框架可参考src/Action代码。
- yii2 示例
- ThinkPHP5 示例
2. 架构图
3. 特性
-
基于swoole的job调度组件;类似gearman的分布式任务处理系统;
-
redis/rabbitmq/zeromq和其他任何队列消息存储(目前仅支持redis/rabbitmq)。
-
使用swoole进程实现多进程管理,进程数量可配置,worker进程退出后会自动拉起。
-
可以配置子进程的循环次数,防止业务代码内存泄漏;默认停止命令会等待子进程平稳退出。
-
支持主题特性,不同的job绑定不同的主题;
-
每个主题启动相应数量的子进程,消除不同主题之间的交互。
-
根据队列堆积量,子进程动态启动进程,可以配置最大子进程数量。
-
支持composer,可以与任何框架集成;
-
日志文件自动切割,默认最大100M,最多5个日志文件,防止日志刷满磁盘;
-
支持队列,支持钉钉机器人等其他消息提醒。
4. 安装
4.1 composer
git clone https://github.com/kcloze/swoole-jobs.git
cd swoole-jobs
composer install
4.2 docker
- git clone https://github.com/kcloze/swoole-jobs.git
- cd swoole-jobs 和 composer install
- 基于根目录的Dockerfile构建镜像
- docker build -t swoole-jobs .
- docker run -it -v ~/data/code/php:/data swoole-jobs /bin/bash
- 进入docker容器后,进入项目目录
php ./bin/swoole-jobs.php start
5. 运行方式
5.1 示例
1.edit config.php
2.start service
php ./bin/swoole-jobs.php start >> log/system.log 2>&1
3.push jobs
php ./tests/testJobsSerialzie.php
4.start api server
php ./bin/swoole-jobs.php http start
5.stop api server
php ./bin/swoole-jobs.php http stop
5.2 启动参数说明
NAME
- manage swoole-jobs
SYNOPSIS
-php bin/swoole-jobs.php app [options]
-Manage swoole-jobs daemons.
WORKFLOWS
-help [command]
-Show this help, or workflow help for command.
-restart
-Stop, then start swoole-jobs master and workers.
-start
-Start swoole-jobs master and workers.
-stop
-Wait all running workers smooth exit, please check swoole-jobs status for a while.
-exit
-Kill all running workers and master PIDs.
-http start
-Start swoole http server for apis.
-http stop
-Stop swoole http server for api.
5.3 API参数说明
5.3.1 api url
5.3.2 api params
6. 服务管理
有两种在线启动和关闭服务的方法
6.1 将启动脚本添加到crontab定时任务中,每分钟执行一次(swoole-jobs会自动检查是否正在执行,避免重复启动)。
* * * * * /usr/local/bin/php /***/swoole-jobs.php start >> /***/log/system.log 2>&1
6.2 使用SYSTEMd管理(故障重启,开机启动)
1. According to your own project path, modify: docs/systemd/swoole-jobs.service
2. sudo cp -f systemd/swoole-jobs.service /etc/systemd/system/
3. sudo systemctl --system daemon-reload
4. Service management
# 启动服务 sudo systemctl start swoole-jobs.service
# 重新加载服务 sudo systemctl reload swoole-jobs.service
# 停止服务 sudo systemctl stop swoole-jobs.service
7. 系统截图
htop
状态
8. 更新日志
- 更新日志
- 9. 注意事项
- 使用swoole >=4版本,需要设置php.ini,禁用协程
10. 压力测试
- 瓶颈:redis/rabbitmq队列存储本身和作业执行速度
11. 感谢
12. 联系方式
QQ群:141059677
13. 捐赠
- 如果这个项目真的帮助了您,请点击右上角为该项目加星。