apollo/yii2-gearman

PHP 的 Gearman 处理器(分支版本)

安装次数: 186

依赖者: 0

建议者: 0

安全性: 0

星标数: 0

关注者: 2

分支: 29

类型:yii2-extension

dev-master 2015-05-29 07:44 UTC

This package is not auto-updated.

Last update: 2024-09-18 07:41:00 UTC


README

此扩展基于 这个这个 以及 这个 构建。项目的目标是能够在同一台机器上启动多个工作进程。仅作为进程(分支)运行。在配置中,您可以设置节点数量,请参阅'配置'部分。

安装

建议您通过 composer 安装 Gearman 库 通过 composer。为此,请将以下行添加到您的 composer.json 文件中。

{
    "require": {
       "apollo/yii2-gearman": "dev-master"
    }
}

配置

'components' => [
  'gearman' => [
      'class' => 'apollo\yii2\gearman\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' => 'apollo\yii2\gearman\GearmanController',
        'gearmanComponent' => 'gearman',
    ],
    ...
],

作业示例

namespace common\jobs;

use apollo\yii2-gearman\JobBase;

class SyncCalendar extends JobBase
{
    public function execute(\GearmanJob $job = null)
    {
        // Do something
    }
}

管理工作进程

yii gearman/start  // start the worker
yii gearman/restart  // restart worker
yii gearman/stop // stop worker

使用 Dispatcher 的示例

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