ykushev /
PHP 的 Gearman 处理器
1.0.0
2020-02-04 10:31 UTC
Requires
- php: >=5.4.0
- psr/log: ~1
- react/event-loop: 0.4.*
- yiisoft/yii2: *
Requires (Dev)
- phpunit/phpunit: ~4
Suggests
- ext-gearman: This library needs Gearman
This package is auto-updated.
Last update: 2024-09-04 21:57:18 UTC
README
本扩展基于 这个 和 这个 构建。项目的目标是能够在同一台机器上启动多个工作进程。
安装
建议您通过 composer 安装 Gearman 库 Composer。为此,将以下行添加到您的 composer.json
文件中。
{ "require": { "ykushev/yii2-gearman": "dev-master" } }
配置
'components' => [ 'gearman' => [ 'class' => 'ykushev\yii2\gearman\GearmanComponent', 'servers' => [ ['host' => '127.0.0.1', 'port' => 4730], ], 'user' => 'www-data', 'jobs' => [ 'syncCalendar' => [ 'class' => 'common\jobs\SyncCalendar' ], ... ] ] ], ... 'controllerMap' => [ 'gearman' => [ 'class' => 'ykushev\yii2\gearman\GearmanController', 'gearmanComponent' => 'gearman' ], ... ],
作业示例
namespace common\jobs; use ykushev\yii2\gearman\JobBase; class SyncCalendar extends JobBase { public function execute(\GearmanJob $job = null) { // Do something } }
管理工作进程
yii gearman/start 1 // start the worker with unique id yii gearman/restart 1 // restart worker yii gearman/stop 1 // stop worker
使用分发器示例
Yii::$app->gearman->getDispatcher()->background('syncCalendar', new JobWorkload([ 'params' => [ 'data' => 'value' ] ])); // run in background Yii::$app->gearman->getDispatcher()->execute('syncCalendar', new JobWorkload([ 'params' => [ 'data' => 'value' ] ])); // run synchronize
使用 Supervisor 配置来管理多个工作进程的示例
[program:yii-gearman-worker]
command=php [path_to_your_app]/yii gearman/start %(process_num)s
process_name=gearman-worker-%(process_num)s
priority=1
numprocs=5
numprocs_start=1
autorestart=true