isometriks/symfony-gearman-bundle

将 Gearman 集成到 Symfony2 中

安装: 17

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 3

分支: 9

类型:symfony-bundle

1.0.0 2013-08-12 19:24 UTC

This package is auto-updated.

Last update: 2024-09-24 10:36:34 UTC


README

安装

composer.json

{
    "require": {
        "laelaps/symfony-gearman-bundle": "1.*@dev"
    }
}

config.yml

laelaps_gearman:
    servers:
        - localhost:4730

或者

laelaps_gearman:
    servers: "localhost:4730,localhost:4731"

app/AppKernel.php

<?php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Laelaps\GearmanBundle\GearmanBundle(),
        // ...
    );
}

工作进程监督器 cron 工具

有一个简单的监督器 bash 脚本可用。有关说明,请参阅

laelaps#2 (评论)

示例

工作进程

<?php

// AcmeDemoBundle\Worker\ExampleWorker.php

namespace AcmeDemoBundle\Worker;

use GearmanJob;
use Laelaps\GearmanBundle\Annotation as Gearman;
use Laelaps\GearmanBundle\Worker;
use Symfony\Component\Console\Output\OutputInterface;

class ExampleWorker extends Worker
{
    /**
     * @Gearman\PointOfEntry(name="example_job_name")
     * @param GearmanJob $job
     * @param Symfony\Component\Console\Output\OutputInterface $output
     * @return boolean returning false means job failure
     */
    public function doExampleJob(GearmanJob $job, OutputInterface $output)
    {
        // do your job
    }
}

运行工作进程

Symfony 风格表示法

$ ./app/console gearman:worker:run AcmeBundle:ExampleWorker

注意,这将查找 Acme\Bundle\AcmeBundle\Worker\ExampleWorker

$ ./app/console gearman:worker:run ./src/AcmeDemoBundle/Worker/ExampleWorker.php

通配符也是可用的(不推荐但可能 - 多个工作进程将导致单个进程)

$ ./app/console gearman:worker:run "./src/AcmeDemoBundle/Worker/*.php"

运行所有捆绑包中的所有工作进程

$ ./app/console gearman:worker:run "./src/*/Worker/*.php"

从控制器调用作业

<?php

class ExampleController
{
    public function exampleAction()
    {
        // job name taken from PointOfEntry annotation
        $this->get('laelaps.gearman.client')->doBackground('example_job_name', $optionalWorkload = '');
    }
}

从命令行调用作业

$ ./app/console gearman:job:run example_job_name
$ ./app/console gearman:job:run example_job_name optional_workload_string