Laravel框架进阶:掌握队列系统,优化应用性能

news2024/7/6 18:13:17

Laravel使用队列处理

本文主要讲述如何利用 Laravel 框架的队列系统来管理异步任务和设置周期性执行的任务,从而增强应用程序的效能和可靠性。

Laravel队列的优势

异步执行:将任务添加到队列中后,可以立即返回响应给用户,而任务会在后台异步执行。

提高并发:由于任务被放入队列,可以同时处理多个任务,提高了应用的并发处理能力。

容错处理:当任务执行失败时,Laravel会将任务重新放入队列,确保任务能够被成功执行。

安全稳定:通过将任务放入队列,能够避免一些敏感操作或者耗时操作阻塞正常的请求流程。

微服务化支持:可以通过队列服务与其他微服务进行解耦合,提高应用的可扩展性。

配置驱动

根目录 config 文件夹下 queue.php ,配置 redis 驱动

//框架默认驱动我们设置为redis
'default' => env('QUEUE_CONNECTION', 'redis'),
//connections里面有多种驱动 文件 数据库 redis,这里我们使用redis 
'redis' => [
	'driver' => 'redis',
	'connection' => 'default',
	'queue' => env('REDIS_QUEUE', 'default'),
	'retry_after' => env('QUEUE_RETRY_AFTER',90),
	'block_for' => null,
	'after_commit' => false,
],

使用队列

使用 Laravel 自带的 Artisan 命令创建任务类

php artisan make:job Test

组装任务类

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class Test implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    
    protected $test;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($test)
    {
        $this->test = $test;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //处理队列的逻辑
        echo $this->test;
    }
}

使用队列的 dispatch 方法来将任务分发到队列中,等待异步处理

    //传入任务类需要的参数
   Test::dispatch($test);

启动队列,设置需要启动的队列名称,tries=3 是指队列失败后重试三次

php artisan queue:work --queue=test --tries=3

防止队列在后台被杀死,我们可以安装 supervisor 然后配置队列命令即可

在这里插入图片描述

注: 每次修改队列代码后,需要重新启动队列不然代码不生效,这个坑是大家非常容易遇到的

结论

Laravel的队列处理可以显著提升应用程序的并发性和用户体验,通过异步执行耗时任务,使用户响应更快。

– 欢迎点赞、关注、转发、收藏【我码玄黄】,gonghao同名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1798333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI绘画如何打造高质量数据集?

遇到难题不要怕&#xff01;厚德提问大佬答&#xff01; 厚德提问大佬答11 你是否对AI绘画感兴趣却无从下手&#xff1f;是否有很多疑问却苦于没有大佬解答带你飞&#xff1f;从此刻开始这些问题都将迎刃而解&#xff01;你感兴趣的话题&#xff0c;厚德云替你问&#xff0c;你…

MySQL表的增删改查初阶(上篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

SVNCloud 与 Navicat和IDEA的连接

文章目录 SVNCloud 配置Navicat访问云端数据库与IDEA Java jdbc 的连接 SVNCloud 配置 访问网址&#xff1a;SVN注册账号&#xff0c;进入mysql区域&#xff1a; 数据库管理->创建数据库&#xff0c;输入数据库名称和密码&#xff0c;注意&#xff0c;这里的数据库名称实际…

【机器学习】机器学习在深度学习领域中的作用:半监督学习的视角

&#x1f440;时空之门&#x1f440; &#x1f50d;引言&#x1f388;半监督学习概述&#x1f69d;机器学习在深度学习领域中的作用☘特征提取与表示学习&#x1f340;复杂任务建模❀结合半监督学习提升性能 &#x1f680;半监督学习在深度学习中的应用场景&#x1f4d5;图像识…

如何搭建一台永久运行的个人服务器?

一、前言 由于本人在这段时候&#xff0c;看到了一个叫做树莓派的东东&#xff0c;初步了解之后觉得很有意思&#xff0c;于是想把整个过程记录下来。 二、树莓派是什么&#xff1f; Raspberry Pi(中文名为树莓派,简写为RPi&#xff0c;(或者RasPi / RPI) 是为学习计算机编程…

HarmonyOS开发-鸿蒙UiAbility 组件间跳转

前言 随着春节假期结束各行各业复产复工&#xff0c;一年一度的春招也持续火热起来。最近&#xff0c;有招聘平台发布了《2024年春招市场行情周报&#xff08;第一期&#xff09;》。总体来说今年的就业市场还是人才饱和的状态&#xff0c;竞争会比较激烈。 但是&#xff0c;…

【网络基础1】

文章目录 学习目标一、网络基础11.网络的重要性2.osi7层模式3.协议和osi7层模型的关系4.数据的封装和解封装5.tcp的三次握手6.Ddos攻击讲解7.Tcp的四次挥手 二、网络基础21.文字编码2.IP地址的划分3.子网掩码4.同网段ip才能直接通信5.DNS解析6.DNS解析命令7.短域名为什么值钱8.…

HTTP --tcp和keep-alive

TCP TCP连接 tcp/ip是全球计算机以及网络设备都在使用的一种常见的分组交换网络分层协议集&#xff0c;客户端可以打开一条tcp/ip连接&#xff0c;连接到可能运行在世界各地的服务器应用程序&#xff0c;一旦连接建立起来了&#xff0c;在客户端和服务器的计算机之间交换的报…

Unity 资源 之 风格化地形纹理(Stylized Terrain Textures)免费领取

风格化地形纹理&#xff1a;Stylized Terrain Textures 前言资源包内容领取兑换码 前言 亲爱的 Unity 游戏开发者们&#xff0c;我们自豪地为大家推荐最新的每周免费资源&#xff1a;风格化地形纹理&#xff01;这些令人惊叹的纹理将为你的游戏世界带来独特而引人入胜的视觉体…

Ambari集成Apache Kyuubi实践

目前还有很多公司基于HDP来构建自己的大数据平台&#xff0c;随着Apache Kyuubi的持续热度&#xff0c;如何基于原有的HDP产品来集成Apache Kyuubi&#xff0c;很多人都迫切的需求。集成Apache Kyuubi到HDP中&#xff0c;主要涉及Ambari的二次开发。本文详细叙述了集成Apache K…

老师怎么发期末成绩?

期末成绩发放&#xff0c;可是每个学期的重头戏&#xff0c;老师们&#xff0c;你们怎样安全、高效的传达成绩&#xff1f;别急&#xff0c;今天就来聊聊这个问题。 先来个小调查&#xff1a;各位老师们都是怎么发成绩的&#xff1f;是传统的纸质成绩单&#xff0c;还是电子邮件…

IngsollRang伺服拧紧轴控制器维修故障排查

【IngsollRang控制器故障排查】 在开始维修之前&#xff0c;请确保拧紧机已关闭并断开电源。然后&#xff0c;按照以下步骤进行故障排查&#xff1a; 1. 检查电源连接&#xff1a;确保拧紧机的电源线牢固连接&#xff0c;且电源插座正常工作。 2. 检查保险丝&#xff1a;如果电…

SmartEDA赋能学校教育:电子设计学习新篇章,让梦想触手可及!

在数字化时代&#xff0c;电子设计已成为科技创新的重要驱动力。然而&#xff0c;对于许多初学者和在校学生来说&#xff0c;电子设计的学习过程往往充满了挑战和困惑。幸运的是&#xff0c;随着SmartEDA的出现&#xff0c;这一局面正在发生深刻改变。SmartEDA不仅简化了电子设…

期末成绩怎么单独发给家长

想知道如何让成绩查询变得简单又安全吗&#xff1f;跟着我&#xff0c;带你发现一个让家长和老师都省心的神器&#xff01; 传统的成绩发布方式&#xff0c;一张张成绩单&#xff0c;一封封邮件&#xff0c;或是一条条短信&#xff0c;这些方法虽然有效&#xff0c;但效率不高&…

如何利用51建模网,在跨境独立站内实现商品3D模型嵌入展示?

跨境电商卖家如何在自己的独立站上嵌入商品3D模型&#xff1f;利用51建模网的Web3D展示技术和内嵌功能&#xff0c;即可实现商品3D模型嵌入&#xff0c;全方位的720立体交互展示&#xff0c;为消费者带来沉浸式的购物体验&#xff0c;显著提升消费者的参与度和网页访问时长。 具…

随到随学|2024泰迪智能科技暑期在线项目/集训营

在数字化转型的浪潮中&#xff0c;大数据和人工智能等前沿技术已成为推动经济发展和科技进步的关键动力。当前&#xff0c;全球各行各业都在积极推进数字化转型&#xff0c;不仅为经济增长注入新活力&#xff0c;也对人才市场结构产生了深刻影响&#xff0c;尤其是对数字化人才…

【优化过往代码】关于vue自定义事件的运用

【优化过往代码】关于vue自定义事件的运用 需求说明过往代码优化思路优化后代码&#xff08;Vue2&#xff09;遇到问题记录 Vue2官方自定义指令说明文档 Vue3官方自定义指令说明文档 需求说明 进入某些页面需要加载一些外部资源&#xff0c;并在资源加载完后进行一些处理&…

建构信任基石:揭秘Web3的去中心化信任体系

在传统的互联网时代&#xff0c;信任往往建立在中心化的机构和第三方平台之上&#xff0c;而这种中心化的信任体系往往面临着数据泄露、信息滥用等问题。然而&#xff0c;随着区块链技术的发展&#xff0c;Web3时代正在向我们展示一种全新的信任体系&#xff0c;即去中心化的信…

C++基础一:代码编译和运行时的调用堆栈

目录 运行时进程的虚拟地址划分 函数调用堆栈 程序编译链接原理 运行时进程的虚拟地址划分 每一个进程的用户空间是私有的&#xff0c;内核空间是共享的 函数调用堆栈 程序编译链接原理

短剧小程序剧场短剧APP定制开发付费短剧之如何搭建?

在构建小剧场短剧影视小程序的过程中&#xff0c;遵循明确的步骤并注意到关键的细节至关重要。 步骤一&#xff1a;寻找适合的源码 1、考虑源码的授权方式&#xff1a;选择开源或商业授权的源码时&#xff0c;要仔细阅读其授权协议&#xff0c;确保它允许你进行修改和商业化利…