eo/job-queue-bundle
允许将 Symfony2 控制台命令作为作业进行调度。
Requires
- doctrine/common: >=2.3
- doctrine/mongodb-odm-bundle: >=2.1
- jms/di-extra-bundle: >=1.1
- symfony/framework-bundle: >=2.1
Requires (Dev)
Suggests
- pagerfanta/pagerfanta: Required when using the webinterface.
- sensio/framework-extra-bundle: Required when using the webinterface.
- symfony/twig-bundle: Required when using the webinterface.
This package is auto-updated.
Last update: 2024-09-24 00:07:51 UTC
README
Mongodb ODM 实现用于 JMSJobQueueBundle,允许将 Symfony2 控制台命令作为作业进行调度。
先决条件
此版本的包需要 Symfony 2.1+
安装
步骤 1: 使用 composer 下载 EoJobQueueBundle
在您的 composer.json 中添加 EoJobQueueBundle
{
"require": {
"eo/job-queue-bundle": "dev-master"
}
}
现在运行以下命令,让 composer 下载该包
$ php composer.phar update eo/job-queue-bundle
Composer 将将包安装到您的项目 vendor/eo 目录。
步骤 2: 启用包
在 kernel 中启用包
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new Eo\JobQueueBundle\EoJobQueueBundle(),
);
}
步骤 3: 修改控制台基础应用程序类
让 app/console
使用 EoJobQueueBundle 的 Application
// use Symfony\Bundle\FrameworkBundle\Console\Application;
use Eo\JobQueueBundle\Console\Application;
步骤 4(可选):配置包
现在您已正确安装并启用了 EoJobQueueBundle,下一步是配置该包以适应您应用程序的具体需求。
要更改包使用的默认作业类,请将以下配置添加到您的 config.yml
文件中
# app/config/config.yml
eo_job_queue:
job_class: JuliusJobBundle:Job
设置 supervisord
为了使此包正常工作,您必须确保始终运行一个(并且只有一个)控制台命令 eo-job-queue:run
的实例。您可以使用 supervisord 实现这一点。
一个示例 supervisord 配置可能如下所示
[program:eo_job_queue_runner]
command=php %kernel.root_dir%/console eo-job-queue:run --env=prod --verbose
process_name=%(program_name)s
numprocs=1
directory=/tmp
autostart=true
autorestart=true
startsecs=5
startretries=10
user=www-data
redirect_stderr=false
stdout_logfile=%capistrano.shared_dir%/eo_job_queue_runner.out.log
stdout_capture_maxbytes=1MB
stderr_logfile=%capistrano.shared_dir%/eo_job_queue_runner.error.log
stderr_capture_maxbytes=1MB
对于测试或开发,当然也可以手动运行该命令,但默认情况下它将在 15 分钟后自动退出(您可以使用
--max-runtime=seconds
选项更改此设置)。
使用方法
创建作业
创建作业非常简单,只需持久化 Job
实例即可
<?php
$job = new Job('my-symfony2:command', array('some-args', 'or', '--options="foo"'));
$dm->persist($job);
$dm->flush($job);
在作业之间添加依赖关系
如果您想让一个作业在另一个作业完成后运行,也可以很容易地实现这一点
<?php
$job = new Job('a');
$dependentJob = new Job('b');
$dependentJob->addJobDependency($job);
$dm->persist($job);
$dm->persist($dependentJob);
$dm->flush();
向作业添加相关文档
如果您想将作业链接到另一个文档,例如为了更容易地找到作业,作业提供了一个特殊的多对一关联
<?php
$job = new Job('a');
$job->addRelatedDocument($anyDocument);
$dm->persist($job);
$dm->flush();
$dm->getRepository('EoJobQueueBundle:Job')->findJobForRelatedDocument('a', $anyDocument);
安排作业
如果您想安排一个作业
<?php
$job = new Job('a');
$date = new DateTime();
$date->add(new DateInterval('PT30M'));
$job->setExecuteAfter($date);
$dm->persist($job);
$dm->flush();
许可证
此包采用 Apache2 许可证。请参阅包中的完整许可证
Resources/meta/LICENSE
报告问题或功能请求
与此包相关的问题和功能请求在 Github 问题跟踪器中跟踪 https://github.com/eymengunay/EoJobQueueBundle/issues