【问题标题】:php-resque job perform function not executed?php-resque 作业执行功能未执行?
【发布时间】:2014-01-05 05:23:34
【问题描述】:

我正在尝试使用 php-resque 进行后台作业。我有这个代码:

\Resque::setBackend('127.0.0.1:6379');
\Resque::enqueue('default', '\BaseModule\Jobs\Mail',  array());

在邮件类我有这个

class Mail
{

   public function perform()
    {
            lakdf;  
    }
}

关于“lakdf;”的错误是特意来的。

当我在我的 redis 上打开监视器并尝试执行作业时,它会这样写:

1387283121.312817 [0 127.0.0.1:32827] "set" "resque:worker:michal-pc:9622:default" "{\"queue\":\"default\",\"run_at\":\"Tue Dec 17 12:25:21 UTC 2013\",\"payload\":{\"class\":\"\\\\BaseModule\\\\Jobs\\\\Mail\",\"args\":[[]],\"id\":\"c7c64e218bc951018c2a264eaf5a4b9a\"}}"
1387283121.313312 [0 127.0.0.1:32827] "incrby" "resque:stat:processed" "1"

所以从“reque:stat:processed”中我认为,我的工作已被处理,但是执行函数有一个错误,它没有写任何错误,就像永远不会执行执行函数一样。

即使我在执行函数中对数据库进行了一些插入,它也不会执行任何操作。

有谁知道,问题出在哪里?为什么执行函数似乎没有执行?

【问题讨论】:

  • 你使用的是什么版本的 PHPResque?
  • 我很清楚您的 PHP 函数不支持此功能或缺少模块。请给我们你的版本。

标签: php redis php-resque


【解决方案1】:

PHP 会假设

    lakdf;

是:

$lakdf;

所以如果你真的想抛出一个错误,那么你可以通过替换该行来强制一个错误:

error_log("I am throwing an error from within the Mail::perform function");

【讨论】:

    【解决方案2】:

    希望对单个命令有所帮助:

    $command = 'php ' . 'background_process_autoresponder.php';
    $a = shell_exec(sprintf('%s > /dev/null 2>&1 &', $command));
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多