如果您不在乎您的工作,可以简单地在工作中设置deleteWhenMissingModels属性,Laravel 将 [忽略丢失的模型](《Laravel 中文文档》7.x/queues#ignoring-missing-models),它不会将作业发送到 failed_jobs 表。 这可能是一个极端的情况,但是根据您要处理的作业数量的多少,这确实有助于保持
在.env文件中,我们将QUEUE_DRIVER=sync改为QUEUE_DRIVER=database。 接下来,我们运行以下Artisan命令: 1 $ php artisan queue:work 队列的worker会一直运行,每当有任务被添加进数据库jobs表中,worker便会自动抓取出任务进行处理。当任务失败时,worker会重复执行任务,直至最大尝试次数(默认为255)。我们可以手动设置最...
这个神奇的骚操作的出现是因为“InteractsWithQueue”这个trait。.当排队作业正在从队列中拉出, 这个[CallQueuedListener](https://github.com/laravel/framework/blob/5.8/src/Illuminate/Events/CallQueuedListener.php#L90-L104)会检查它是否在使用InteractsWithQueuetrait, 如果是的话,框架会将底层的“队列jobs”实例...
或者,你可以通过在任务的构造函数中调用 onQueue 方法来指定任务队列:<?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; class Process...
异常处理:在队列任务中,可以使用 try-catch 语句来捕获异常。当任务失败时,Laravel 会自动将失败的任务放入一个特殊的队列中,名为 “failed_jobs”。你可以在这个队列中查看失败的任务日志,以便于分析和处理。 publicfunctionhandle(){try{// 你的任务逻辑}catch(\Exception$e) {// 记录异常信息report($e);//...
通过php artisan tinker连续执行多次dispatch(new App\Jobs\TestJob())。队列一开立刻就重现了故障,如下面日志所示,队列在执行第1个任务时就没在打出任务东西了。 $php artisan queue:work [2020-09-03 20:15:27][UP4PcTPaZgx2ckI4RCZhZeih5KtosfSs] Processing: App\Jobs\TestJob ...
问为什么我的Laravel失败的工作没有出现在failed_jobs表中?EN队列配置文件存放在config/queue.php 。在...
.当排队作业正在从队列中拉出, 这个[CallQueuedListener](https://github.com/laravel/framework/blob/5.8/src/Illuminate/Events/CallQueuedListener.php#L90-L104)会检查它是否在使用InteractsWithQueuetrait, 如果是的话,框架会将底层的“队列jobs”实例注入到内部。
当创建队列jobs、监听器或订阅服务器以推送到队列中时,您可能会开始认为,一旦分派,队列工作器决定如何处理您的逻辑就完全由您自己决定了。 嗯……并不是说你不能从作业内部与队列工作器交互,但是通常情况下,哪怕你做了,也是没必要的。 这个神奇的骚操作的出现是因为“InteractsWithQueue”这个trait。.当排队作业正...
要创建 failed_jobs 表的话,你可以用 queue:failed-table 命令:php artisan queue:failed-table php artisan migrate然后运行队列处理器,在调用 queue:work 命令时你应该通过 --tries 参数指定任务的最大重试次数。如果不指定,任务就会永久重试:php artisan queue:work redis --tries=3...