laravel 队列

项目中经常会有后台运行任务的需求

一、异步处理

比如发送邮件时,因为要连接邮件服务器,往往需要5-10秒甚至更长时间,如果能先给用户一个成功的提示信息,然后在后台慢慢处理发送邮件的操作,显然会有更好的用户体验。或者发送短信

二、日志处理

日志处理是指将消息队列用在日志处理中,可以解决大量日志传输的问题

 laravel中执行队列的步骤:

1、php artisan make:job autionBid

生成的文件,如图所示


2、结构方法可以进行传参数,handel方法里,可以写执行的逻辑,如图所示


handle方法在任务被队列处理的时候被调用,注意我们可以在任务的handle方法中进行依赖注入。Laravel服务容器会自动注入这些依赖。

3、推送任务到队列中

在需要执行此方法的里头,执行

$this->dispatch(new autionBid(参数));

这样队列就被推送成功

4、队列监听

php artisan queue:listen

这样队列自动监听,有时候队列会停止,为了维护队列进程,使用supervisor进行监听队列

5、在config/queue.php ,这是redis队列

6、supervisor

项目中遇到有些脚本需要通过后台进程运行,保证不被异常中断,之前都是通过nohup、&、screen来实现, Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

https://blog.tanteng.me/2017/01/supervisor-laravel-queue/

http://laravelacademy.org/post/3252.html

https://www.jianshu.com/p/445ef6820753

https://lvwenhan.com/laravel/395.html

https://www.cnblogs.com/wswang/p/5795766.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值