Php 如何只运行一次Laravel队列?
我使用Laravel5.1Queue作为我的后台函数,使用async。 但我只想运行该函数一次。如果该函数失败,我想执行其他过程。 如何检测我的工作是否失败? 我做得对还是错?我应该换什么? 附言:我是初学者。我在控制器中使用的是这样的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
$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。我不能在控制器里做吗?