elvetemedve / magento-jobqueue
0.5.0
2016-08-02 09:32 UTC
Requires
- php: >=5.1
- elvetemedve/djjob: ~1.0.0
This package is auto-updated.
Last update: 2022-02-01 13:00:18 UTC
README
#JobQueue
您是否需要在用户生成请求之外运行进程?您是否正在开发需要“保证交付”的集成?JobQueue 允许 Magento 应用程序将任务放入队列以异步处理。它是基于 DJJob 构建的,并利用了现有的 MySQL 后端。以下是一些可能非常适合的任务:
- 下载文件
- 处理批量作业
- 将数据发送到后台办公应用程序或第三方系统
###系统要求
- PHP 5.1 或更高版本
- MySQL 4.1.20 或更高版本
- Magento CE1.6.0-1.9.x/EE1.7.0-1.14.x
###使用方法
作业必须扩展 Jowens_JobQueue_Model_Job_Abstract 并实现 perform() 方法。
class Foo_Bar_Model_Order_Job extends Jowens_JobQueue_Model_Job_Abstract
{
public function perform() {
// implementation logic
}
}
该作业可以这样使用
$job = Mage::getModel('bar/order_job');
$job->setName('Order# 12345')
->enqueue();
名称用于在后台标识作业,因此请使用描述性的名称!enqueue 方法可以接受两个可选参数,一个是队列名称的字符串,一个是指定运行作业的时间戳。
作业也可以立即尝试执行。如果失败,它将被添加到默认队列以重试。
$job = Mage::getModel('bar/order_job');
$job->setName('Order# 12345')
->performImmediate();
要将作业放入除默认队列之外的队列,performImmediate 可以接受一个可选的字符串值作为重试队列的名称。
###运行作业
JobQueue 需要配置 Magento cron 才能运行挂起的作业。默认情况下,JobQueue 工作进程每 5 分钟执行一次挂起的作业。如果作业失败,它将被重试最多 10 次。这两个设置都可以在管理面板的“系统”>“配置”>“常规”>“JobQueue”下进行配置。
可以通过向自定义模块的 config.xml 添加更多 cron 条目来执行其他队列中的作业。
<crontab>
<jobs>
<jobqueue_orders>
<schedule>
<config_path>jobqueue/config/cron_expr</config_path>
</schedule>
<run>
<model>jobqueue/worker::executeJobs</model>
</run>
<queue>orders</queue>
</jobqueue_orders>
</jobs>
</crontab>
或者,可以配置工作进程像 DJJob 一样正常运行。请参阅文档。
###监控作业
可以通过转到“系统”>“JobQueue”在管理面板中监控挂起和失败的作业。