【发布时间】:2017-05-05 17:18:07
【问题描述】:
有时我需要释放一个 Laravel 作业并让它重新加入队列。但是,这样做时,尝试次数会增加。它变为 2,如果您的队列工作器被限制为 1 次尝试,它将永远不会运行。
如何在不增加尝试的情况下释放?
释放我正在使用的:
$this->release(30);
在此行之前,我尝试了以下代码:
$payload = json_decode($this->payload, true);
if (isset($payload['attempts'])) {
$payload['attempts'] = 0;
}
$this->payload = json_encode($payload);
这不起作用。 payload 属性不可用。它似乎存在于the Job class。
Laravel 框架必须重置计数的代码位于 RetryCommand 类中。如下:
protected function resetAttempts($payload)
{
$payload = json_decode($payload, true);
if (isset($payload['attempts'])) {
$payload['attempts'] = 0;
}
return json_encode($payload);
}
但我不知道如何从我的工作类访问$payload?
有没有更好的方法在不增加尝试次数的情况下释放工作?
我正在使用 Laravel 5.4 和 Redis 队列驱动程序。
【问题讨论】:
标签: php laravel laravel-queue