php-resque作业执行功能没有执行?

时间:2013-12-17 12:36:15

标签: php redis php-resque

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

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

在Mail类我有这个

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”我认为,我的工作已被处理,但是执行函数有一个错误而且它没有写任何错误,就像执行函数永远不会执行一样。

即使我在执行函数中对数据库进行了一些插入,它也什么都不做。

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

2 个答案:

答案 0 :(得分:1)

PHP将假设

    lakdf;

是:

$lakdf;

因此,如果您真的想要抛出错误,那么您可以通过用以下代码替换该行来强制执行:

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

答案 1 :(得分:-1)

希望这对单一命令有帮助:

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