jkowens/magento-jobqueue

基于DJJob的Magento任务队列

安装次数: 46,582

依赖: 1

建议者: 0

安全: 0

星标: 53

关注者: 11

分支: 22

开放问题: 1

类型:magento-module

0.8.0 2018-10-31 14:47 UTC

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在管理面板中监控挂起和失败的作业。