mwillbanks/mw-gearman

此包已被 放弃 且不再维护。没有建议的替代包。
此包最新版本(dev-master)没有可用的许可信息。

一个提供 gearman 包装器的 ZF2 模块。

dev-master 2015-06-05 12:37 UTC

This package is not auto-updated.

Last update: 2020-01-21 14:09:55 UTC


README

版本 0.1.0 由 Mike Willbanks 创建

介绍

mwGearman 是一个处理与 Gearman 扩展接口的模块。此模块目前可以处理客户端和工作者的通信,并抽象部分任务处理。总体目标是完成 Zend\Console 后,将工作者集成到控制台,以便更简单地构建 gearman 工作者模型。

要求

安装

Composer 您的 composer.json 应包含以下内容。

{
"repositories": [
        {
            "type": "package",
            "package": {
                "version": "master",
                "name": "mwGearman",
                "source": {
                    "type": "git",
                    "url": "https://github.com/mwillbanks/mwGearman",
                    "reference": "master"
                } 
            }

        }
    ],
	"require": {
	        "mwGearman": "master"
	    }
}

Git 子模块

  • git submodule add [repo-url] ./vendor/mwGearman
  • 将 'mwGearman' 添加到您的 application.config.php 文件中

用法

连接处理 DI 配置

<?php
return array(
    'di' => array(
        'instance' => array(
            'mwGearman\Client\Pecl' => array(
                'parameters' => array(
                    'servers' => array(
                        array('localhost'),
                    ),
                ),
            ),
            'mwGearman\Worker\Pecl' => array(
                'parameters' => array(
                    'servers' => array(
                        array('localhost'),
                    ),
                ),
            ),
        ),
    ),
);

向 Gearman 提交任务

<?php
$gearman = $serviceMananger->get('mwGearman\Client\Pecl');
$gearman->connect();

$workload = 'some-string';

$task = new mwGearman\Task\Task();
$task->setBackground(true)
     ->setFunction('myJob')
     ->setWorkload($workload)
     ->setUnique(crc32($workload));

$handle = $gearman->doTask($task);

从 Gearman 获取任务

<?php
$gearman = $serviceMananger->get('mwGearman\Worker\Pecl');
$gearman->register('myJob', 'handleJob');
$gearman->connect();
while($gearman->work());

function handleJob($job) {
    $workload = $job->workload();
    echo $workload;
}

路线图

  • 集成 PEAR 的 Net_Gearman
  • 为 BaseWorker 集成 Zend\Console