laravel当我运行queue:工作在laravel php文件中的作业表没有清除

9wbgstp7  于 2023-06-30  发布在  PHP
关注(0)|答案(1)|浏览(134)

大家好,我有项目上laravel 9一切工作得很好,到目前为止,我有队列作业,当我这样做

它运行良好,它清除作业表后,finsh现在我的问题是,当我运行php工匠队列:工作在php文件中,像这样

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Twilio\Rest\Client;
use Illuminate\Support\Facades\Http;
class General_controller extends Controller
{
    public function test()
    {
        Artisan::call('queue:work');
    }
}

它的工作,但它没有清除作业表,所以当我再次运行命令,它做了同样的工作一次又一次等

o3imoua4

o3imoua41#

问题是您在一个控制器方法中调用queue:workartisan命令。当您调用queue:work命令时,它将启动一个工作线程,该线程侦听队列上的新作业并处理它们。在控制器方法中运行它是没有意义的,因为它是一个长时间运行的进程,用于监听作业并在它们进入时进行处理。
在您的例子中,如果您想在调用测试方法时处理队列,可以在queue:work命令中添加**--once**。这将只处理队列中的下一个作业,然后退出。* 请注意,仍应谨慎使用此方法,并且不推荐使用此方法处理排队作业。最佳实践是让队列worker在服务器的后台运行。*
另外:如果你在本地主机上使用artisan服务。它只有一个线程,不能从请求中启动另一个命令。

相关问题