micmorozov / yii-gearman
PHP的Gearman处理器(分支版本)
dev-master
2023-09-26 11:14 UTC
Requires
- php: >=5.4
Suggests
- ext-gearman: This library needs Gearman
This package is auto-updated.
Last update: 2024-09-26 13:14:51 UTC
README
此扩展基于以下项目构建:这个、这个 和 这个。项目的目标是能够在单台机器上启动多个工作进程。仅作为进程(分支)工作。在配置中可以设置节点数量,请参考“配置”部分。
安装
建议通过Composer安装Gearman库(点击此处)。为此,请将以下行添加到您的composer.json文件中。
{
"require": {
"ferrumfist/yii-gearman": "dev-master"
}
}
配置
'components' => [ 'gearman' => [ 'class' => 'ferrumfist\yii\gearman\src\GearmanComponent', 'servers' => [ ['host' => '127.0.0.1', 'port' => 4730], ], 'user' => 'www-data', 'jobs' => [ 'syncCalendar' => [ 'class' => 'common\jobs\SyncCalendar', 'count'=>10 // default count 1 ], ... ] ] ], ... 'controllerMap' => [ 'gearman' => [ 'class' => 'ferrumfist\yii\gearman\src\GearmanController', 'gearmanComponent' => 'gearman', ], ... ],
作业示例
namespace common\jobs; use ferrumfist\yii-gearman\JobBase; class SyncCalendar extends JobBase { public function execute(\GearmanJob $job = null) { // Do something } }
使用分发器的示例
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