jkowens / magento-jobqueue
基于DJJob的Magento任务队列
0.8.0
2018-10-31 14:47 UTC
Requires
- php: >=5.1
- seatgeek/djjob: 1.0.0
This package is not auto-updated.
Last update: 2024-09-14 19:42:13 UTC
README
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在管理面板中监控挂起和失败的作业。