首页 > 其他分享 >华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)

华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)

时间:2023-10-22 16:04:26浏览次数:36  
标签:queue 队列 实践 Queue 任务 耀云 artisan php 监听

十一、计划任务与Queue队列实践:

1. 计划任务:

Linux环境下定时或者周期性的执行一些任务通常由cron这个守护进程来完成,这是一个系统自带的相对也比较方便的系统工具。

sudo apt-get install cron  // 默认自带

华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)_php

目录结构:

目录

说明

/var/spool/cron/crontabs

用户调度任务目录,是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。

/etc/crontab

系统调度任务,主要负责调度各种管理和维护任务,比如写缓存数据到硬盘、日志清理等。

/etc/cron.d/

用来存放任何要执行的crontab文件或脚本。

可以看到当配置完crontab后,就可以看到触发了发送短信的定时任务Schedule,可如下为打印出来的日志,当然,改造的代码只是做了日志的输出,并没有真实去发送短信。

华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)_php_02


2. 消息队列场景:

我们在开发应用过程中难免会遇到处理耗时任务的需求,这些任务如果直接在用户的请求中处理,必然会导致页面显示被阻塞,可以将任务交给异步队列来处理更为方便。

创建需要存储任务的数据库表。

# 使用 database 队列驱动,需要创建一个数据表来存储任务
php artisan queue:table
# 创建一个数据表来存储队列中的任务会失败
php artisan queue:failed-table
# 使用 migrate 这条命令来创建数据表
php artisan migrate

华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)_laravel_03

同时,可以看到执行migrate后,会同步生成2张表,为分别jobs(记录所有消息队列的数据)、failed_jobs(记录消费失败多少次后的数据)。

华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)_数据_04

生成一个新的队列任务,这里我们模拟给某个用户发送邮件功能,当用户请求统计的路由时,会产生一个队列的待消费数据,可以在jobs表中查看到,当手动queue:listen命令执行监听时,就会触发队列中的任务进行消费,模拟打印一条日志。

华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)_数据_05

# 运行 make:job Artisan 命令自动创建一个新的队列任务
php artisan make:job SendEmail
# 先手动执行监听,模拟当产生数据时,就会触发队列中的任务进行消费
php artisan queue:listen --tries=3 --timeout=30

华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)_laravel_06

开启监听后,得到的日志:

华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)_php_07

华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)_php_08

以上,整个手动监听队列就完成了,实际上,工作的场景是在服务器上后台运行,这里需要Supervisor来进行后台监听。

apt-get install supervisor

华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)_数据_09

配置文件路径在/ /etc/supervisor/conf.d/sendMail.conf内容:

华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)_数据_10

[program:laravel-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /workspace/clang-quickstart/map-api/artisan queue:work --daemon --sleep=3 --tries=3       # 命令
autostart=true
autorestart=true
directory=/workspace/clang-quickstart/map-api           # 进程的当前目录
user=www-data                        # 进程运行的用户身份
numprocs=1                           # 启动多少个进程来监听Laravel队列
redirect_stderr=true

3. 小结:

laravel中的队列服务跟其他队列服务也没有什么不同,有一个地方存放队列信息,一个PHP进程在运行时将任务写入,另外一个PHP守护进程轮询队列信息,将达到执行要求的任务执行并删除,laravel提供一个守护进程工具来查询并执行队列信息。

华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)_laravel_11

标签:queue,队列,实践,Queue,任务,耀云,artisan,php,监听
From: https://blog.51cto.com/u_16255561/7977037

相关文章

  • Yarn federation原理与实践
    1.背景随着业务的增长,Yarn集群也不断扩展。节点数增多、请求增多、队列增多,造成调度性能线性下降。如下是三个集群的性能数据:集群队列数量平均调度耗时最大每秒调度数量CPS集群A27063.8ms483集群B620940微秒1150集群C399676微秒1013对于集群A,......
  • 救济金发放(The Dole Queue, UVa 133)
    #include<stdio.h>#include<string.h>#definemaxn100intn,k,m,a[25];intleft,chance;intwin,lose;chars[maxn],s2[maxn];  intgo(intp,intd,intt){ while(t--){  do{    p=(p+d+n-1)%n+1;//将顺时针与逆时针合并,顺时针向前......
  • java项目实践-jsp-finter-监听器-day19
    目录1.jsp2.过滤器3.listener监听器1.jspservle逻辑处理方便html页面表现麻烦jsp页面表现方便但是逻辑处理麻烦JSP是一种页面技术JSP本质上是servlet类通过JSP引擎翻译成servletjsp约等于java+html注意:jsp不是访问静态的html文件index.jsp修改成如下代码:<%-......
  • 苏格拉底问答、实践过程截图、遇到问题解决问题截图,代码链接
    苏格拉底问答实践过程遇到问题及解决代码......
  • 《软件工程:方法与实践》读书笔记3
    1.瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。瀑布模型的本质是一次通过,即每个活动只执行一次,最后得到软件产品,也称为“线性顺序模型”或者“传统生命周期”。其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施......
  • 数据采集与融合技术实践第三次实验
    数据采集与融合技术实践第三次实验Gitee:https://gitee.com/lululusc/crawl_project/tree/master/作业3作业1要求指定一个网站,爬取这个网站中的所有的所有图片,例如中国气象网(http://www.weather.com.cn/(要求:指定--个网站,爬取这个网站中的所有的所有图片,例如中国气象网)结......
  • 优维产品最佳实践第12期:IT资源管理首页丰富
    背景当我们进入平台后,默认跳转至IT资源管理首页,因此该页面的优化与丰富将极大的提高平台使用者的体验和效率。优化后的首页可以更好地展示常用模型、小产品、外部系统、以及保存的所有关系查询和快速查询条件,使用户能够更快捷、方便地找到所需内容。丰富前:丰富后:功能1.关系查询和......
  • 花生好车基于 KubeSphere 的微服务架构实践
    公司简介花生好车成立于2015年6月,致力于打造下沉市场汽车出行解决方案第一品牌。通过自建直营渠道,瞄准下沉市场,现形成以直租、批售、回租、新能源汽车零售,四大业务为核心驱动力的汽车新零售平台,目前拥有门店600余家,覆盖400余座城市,共设有25个中心仓库。目前已为超40万......
  • 花生好车基于 KubeSphere 的微服务架构实践
    公司简介花生好车成立于2015年6月,致力于打造下沉市场汽车出行解决方案第一品牌。通过自建直营渠道,瞄准下沉市场,现形成以直租、批售、回租、新能源汽车零售,四大业务为核心驱动力的汽车新零售平台,目前拥有门店600余家,覆盖400余座城市,共设有25个中心仓库。目前已为超40......
  • java项目实践-cookie-session-day18
    目录1.cookie2.session3.servletcontext4.servletConfig1.cookiecookie在客户端(浏览器)中保持http状态的信息技术本质是浏览器缓存每次发请求的时候在请求头中带给服务端常见的应用场景:实现7天免登录浏览器F12request.setCharacterEncoding("utf-8");......