elvetemedve/magento-jobqueue

此包已被放弃,不再维护。作者建议使用 jkowens/magento-jobqueue 包。

使用 DJJob 的 Magento JobQueue

安装: 42

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 0

分支: 22

类型:magento-module

0.5.0 2016-08-02 09:32 UTC

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