【问题标题】:How can I define a job in php resque for redis?如何在 php resque 中为 redis 定义工作?
【发布时间】:2012-10-27 00:43:17
【问题描述】:

我是 redis 的新手,目前我正在使用 PHP resque for redis。如何在 php resque 中定义作业?

【问题讨论】:

标签: php redis


【解决方案1】:

这在 2012 年 10 月 13 日发布的最新版本的 PHP-resque 中发生了变化。根据更改日志,“将作业参数包装在一个数组中以提高与 ruby​​ resque 的兼容性。”

这意味着如果您已升级到 PHP-Resque 1.2,您将从 $args[0] 访问作业。

【讨论】:

    【解决方案2】:

    排队作业

    作业排队如下:

    require_once 'lib/Resque.php';
    
    // Required if redis is located elsewhere
    Resque::setBackend('localhost:6379');
    
    $args = array(
        'name' => 'Chris'
    );
    

    Resque::enqueue('default', 'My_Job', $args); 定义工作

    每个作业都应该在它自己的类中,并包含一个 perform 方法。

    class My_Job
    {
        public function perform()
        {
            // Work work work
            echo $this->args['name'];
        }
    }
    

    当作业运行时,该类将被实例化,任何参数都将设置为实例化对象上的数组,并可通过 $this->args 访问。

    作业引发的任何异常都将导致作业失败 - 请注意此处并确保处理不应导致作业失败的异常。

    【讨论】:

    • Avinash,我在 Windows7 上遵循相同的步骤。作业已正确排队。我可以从 Redis 控制台看到它。但是当我运行 Resque 命令时,会弹出作业(Redis 控制台中的计数下降)但作业为空。我通过将 fwrite 放入实际的 PHP-Resque 库来检查这一点。 Resque.php 类的 pop 方法正在获取项目 ($item) 但它始终为空。知道有什么问题吗?这与Windows操作系统有关吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    相关资源
    最近更新 更多