Laravel:如果失败,如何以编程方式运行作业5次?

Laravel:如果失败,如何以编程方式运行作业5次?,laravel,jobs,Laravel,Jobs,这是作业的代码,如果作业失败,我只需要在5秒后运行作业5次。在深入研究代码之前,$this->attempts()总是返回1,所以我没有将其包含在代码中 <?php namespace Modules\Order\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contrac

这是作业的代码,如果作业失败,我只需要在5秒后运行作业5次。在深入研究代码之前,
$this->attempts()
总是返回1,所以我没有将其包含在代码中

<?php

namespace Modules\Order\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Modules\Order\Entities\Order;
use Modules\User\Entities\User;

class CreditPurchase implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    private $order;
    private $user;
    private $paid_at;

    public function __construct(Order $order, User $user, $paid_at)
    {
        $this->order = $order;
        $this->user = $user;
        $this->paid_at = $paid_at;
    }


    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        try {
            $t = 4 / 0;

        } catch (\Throwable $exception) {
            $this->fail();
            $this->delete();
            $this->release(5);
        }
    }
}

作业
public$trys
属性对您有帮助吗

class CreditPurchase implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public $tries = 5;

    //
}
我们也可以使用基于时间的尝试:

public function retryUntil()
{
    return now()->addSeconds(1);
}

它报告错误
CreditPurchase尝试次数太多或运行时间太长。作业以前可能已超时。