14

我正在尝试使用 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”我想,我的工作已经处理了,但是执行函数有一个错误并且它没有写任何错误,就像永远不会执行执行函数一样。

即使我在执行功能中对数据库进行了一些插入,它也不会做任何事情。

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

4

2 回答 2

1

PHP 会假设

    lakdf;

是:

$lakdf;

因此,如果您真的想要抛出错误,那么您可以通过将该行替换为:

error_log("I am throwing an error from within the Mail::perform function");
于 2016-07-18T10:47:01.673 回答
-1

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

$command = 'php ' . 'background_process_autoresponder.php';
$a = shell_exec(sprintf('%s > /dev/null 2>&1 &', $command));
于 2017-05-04T13:33:53.873 回答