isometriks / symfony-gearman-bundle
将 Gearman 集成到 Symfony2 中
1.0.0
2013-08-12 19:24 UTC
Requires
- php: >=5.3.0
- ext-gearman: *
- symfony/console: ~2.1
- symfony/framework-bundle: ~2.1
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 脚本可用。有关说明,请参阅
示例
工作进程
<?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