我怎么能只运行一次Laravel Queue?

时间:2015-11-29 14:24:11

标签: php laravel laravel-5 laravel-5.1 laravel-queue

我使用laravel 5.1 Queue作为我的后台函数与异步。 但我想只运行该功能一次。如果该功能失败,我想做其他过程​​。 我怎样才能发现我的工作失败了? 我做对还是错?我应该改变什么? ps:我是初学者。我在我的控制器中使用了这个。

$job = new myjob($var1, $var2);
$this->dispatch($job);
$job->release();
if ($job->attempts() >= 1)
{
    $job->delete();
    //will do other process
}

2 个答案:

答案 0 :(得分:3)

您应该将--tries参数与1值一起使用,例如:

php artisan queue:work --tries=1

这将只运行一次任务,如果失败则不会重复。

答案 1 :(得分:0)

如果您在访问控制台时遇到问题,可以在控制器中定义尝试:

<?php

namespace App\Jobs;

class ProcessPodcast implements ShouldQueue
{
    /**
     * The number of times the job may be attempted.
     *
     * @var int
     */
    public $tries = 5;
}

参考:https://laravel.com/docs/5.4/queues#max-job-attempts-and-timeout

根据您想要达到的目标,我建议您使用排队事件监听器。

https://laravel.com/docs/5.4/events#queued-event-listeners

我希望得到帮助:)