Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何只运行一次Laravel队列?_Php_Laravel_Laravel 5_Laravel 5.1_Laravel Queue - Fatal编程技术网

Php 如何只运行一次Laravel队列?

Php 如何只运行一次Laravel队列?,php,laravel,laravel-5,laravel-5.1,laravel-queue,Php,Laravel,Laravel 5,Laravel 5.1,Laravel Queue,我使用Laravel5.1Queue作为我的后台函数,使用async。 但我只想运行该函数一次。如果该函数失败,我想执行其他过程。 如何检测我的工作是否失败? 我做得对还是错?我应该换什么? 附言:我是初学者。我在控制器中使用的是这样的 $job = new myjob($var1, $var2); $this->dispatch($job); $job->release(); if ($job->attempts() >= 1) { $job->delet

我使用Laravel5.1Queue作为我的后台函数,使用async。 但我只想运行该函数一次。如果该函数失败,我想执行其他过程。 如何检测我的工作是否失败? 我做得对还是错?我应该换什么? 附言:我是初学者。我在控制器中使用的是这样的

$job = new myjob($var1, $var2);
$this->dispatch($job);
$job->release();
if ($job->attempts() >= 1)
{
    $job->delete();
    //will do other process
}
您应该将
--trys
参数与
1
值一起使用,例如:

php artisan queue:work --tries=1

这将只运行每个任务一次,并且在出现故障时不会重复该任务。

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

<?php

namespace App\Jobs;

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

如果您想等待作业,然后再执行另一个作业,那么首先为什么要异步运行它?只有当作业失败时,我才会执行其他进程。我使用job作为后台函数。因为这个函数有很多curl和数据库进程。我至少要等7秒钟才能完成。这就是为什么我使用job。我不能在我的主机上使用console。我不能在控制器里做吗?