laravel行列失败是什么情形
在使用 laravel 行列时,我们可能会遇到使命执行失败的情形。这时间,laravel 提供了一个很好的解决计划,纵然用失劣行列。
我们在执行行列使命时,可以将失败的使命推入一个专门用来处理失败使命的行列中,然后按期检查这个行列,并重新执行其中的失败使命。这样一来,我们就可以阻止行列使命因一些小问题而终止,继续为我们效劳。
Laravel 的失劣行列提供了多种设置以及可扩展的接口,我们可以凭证自己的需求来举行设置。
首先,我们需要在设置文件 config/queue.php 中设置失败的使命应该进入的行列。该设置项的键为 failed,其值为一个数组,其中包括 driver 和 queue 两个设置项。driver 设置项体现我们希望使用哪个失败驱动,Laravel 默认提供了 database 和 redis 两个失败驱动。而 queue 则体现失败使命将进入哪个行列。
'failed' => [ 'driver' => 'database', 'queue' => 'failed', ],
登录后复制
若是我们希望使用其他的失败驱动,我们可以通过注册自界说失败驱动并在 driver 设置项中引用它来实现。
注册自界说驱动的代码如下所示:
Queue::failing(function ($connection, $job, $data) { // 自界说处理逻辑 });
登录后复制
接下来,我们需要界说处理失败使命的详细逻辑。我们可以直接将失败使命再次推入行列中,这样在下一次行列处理时该使命就会再次被执行。或者,我们也可以将失败使命的一些信息存储下来以备后续检查以及处理。
关于将失败使命推入行列的处理方法,我们可以使用以下代码:
Queue::failing(function ($connection, $job, $data) { $queue = $job->getQueue(); $payload = $job->payload(); Queue::pushRaw($payload, $queue); });
登录后复制
这段代码将失败使命重新推到了原始行列中,期待下一次被执行。
而关于将失败使命信息存储的处理方法,我们可以使用以下代码:
Queue::failing(function ($connection, $job, $data) { // 将失败使命信息存储到数据库中 DB::table('failed_jobs')->insert([ 'connection' => $connection, 'queue' => $job->getQueue(), 'payload' => $job->getRawBody(), 'exception' => $data['exception'], 'failed_at' => now(), ]); });
登录后复制
这段代码将失败使命的信息存储到数据库表 failed_jobs 中,以便我们稍后举行检查以及处理。
除了以上两种处理方法,Laravel 还提供了更多的处理方法供我们选择。我们可以审查 Laravel 的文档以及源代码以相识更多详情。
最后,我们需要按期检查失劣行列并重试其中的使命。Laravel 默认提供了 queue:retry 下令来举行使命重试,该下令接受一个可选参数 –queue,体现我们要重试的使命行列。若是不指定该参数,则默认重试所有行列。
php artisan queue:retry 5 --queue=my-queue
登录后复制
该下令将会从失劣行列中的 my-queue 行列中重新执行前 5 个失败使命。
除此之外,我们还可以使用操作系统的准时使命工具(如 crontab)来周期性地执行 queue:retry 下令,以按期处理失败使命。
总之,Laravel 的失劣行列提供了一个很是好用的解决计划来处理行列使命的失败情形。我们可以凭证自己的需求举行设置,并对失败使命举行多种差别的处理方法。同时,我们还需要按期检查失劣行列并重试其中的使命,以确保行列使命能够正常地运行。
希望本文对各人有所资助。
以上就是laravel行列失败是什么情形的详细内容,更多请关注本网内其它相关文章!