企业文化标语经典,上海网站优化排名公司,开发板是干什么的,计算机网站建设与推广十一、计划任务与Queue队列实践#xff1a;
1. 计划任务#xff1a; Linux环境下定时或者周期性的执行一些任务通常由cron这个守护进程来完成#xff0c;这是一个系统自带的相对也比较方便的系统工具。 sudo apt-get install cron // 默认自带目录结构#xff1a;
目录说…十一、计划任务与Queue队列实践
1. 计划任务 Linux环境下定时或者周期性的执行一些任务通常由cron这个守护进程来完成这是一个系统自带的相对也比较方便的系统工具。 sudo apt-get install cron // 默认自带目录结构
目录说明/var/spool/cron/crontabs用户调度任务目录是每个用户包括root的crontab任务每个任务以创建者的名字命名比如用户定期要执行的工作比如用户数据备份、定时邮件提醒等。/etc/crontab系统调度任务主要负责调度各种管理和维护任务比如写缓存数据到硬盘、日志清理等。/etc/cron.d/用来存放任何要执行的crontab文件或脚本。
可以看到当配置完crontab后就可以看到触发了发送短信的定时任务Schedule可如下为打印出来的日志当然改造的代码只是做了日志的输出并没有真实去发送短信。 2. 消息队列场景 我们在开发应用过程中难免会遇到处理耗时任务的需求这些任务如果直接在用户的请求中处理必然会导致页面显示被阻塞可以将任务交给异步队列来处理更为方便。 创建需要存储任务的数据库表。
# 使用 database 队列驱动需要创建一个数据表来存储任务
php artisan queue:table
# 创建一个数据表来存储队列中的任务会失败
php artisan queue:failed-table
# 使用 migrate 这条命令来创建数据表
php artisan migrate同时可以看到执行migrate后会同步生成2张表为分别jobs(记录所有消息队列的数据)、failed_jobs(记录消费失败多少次后的数据)。 生成一个新的队列任务这里我们模拟给某个用户发送邮件功能当用户请求统计的路由时会产生一个队列的待消费数据可以在jobs表中查看到当手动queue:listen命令执行监听时就会触发队列中的任务进行消费模拟打印一条日志。 # 运行 make:job Artisan 命令自动创建一个新的队列任务
php artisan make:job SendEmail
# 先手动执行监听模拟当产生数据时就会触发队列中的任务进行消费
php artisan queue:listen --tries3 --timeout30开启监听后得到的日志 以上整个手动监听队列就完成了实际上工作的场景是在服务器上后台运行这里需要Supervisor来进行后台监听。
apt-get install supervisor配置文件路径在/ /etc/supervisor/conf.d/sendMail.conf内容
[program:laravel-queue]
process_name%(program_name)s_%(process_num)02d
commandphp /workspace/clang-quickstart/map-api/artisan queue:work --daemon --sleep3 --tries3 # 命令
autostarttrue
autorestarttrue
directory/workspace/clang-quickstart/map-api # 进程的当前目录
userwww-data # 进程运行的用户身份
numprocs1 # 启动多少个进程来监听Laravel队列
redirect_stderrtrue3. 小结
laravel中的队列服务跟其他队列服务也没有什么不同有一个地方存放队列信息一个PHP进程在运行时将任务写入另外一个PHP守护进程轮询队列信息将达到执行要求的任务执行并删除laravel提供一个守护进程工具来查询并执行队列信息。