laravel 任务队列_Laravel5.5之事件监听、任务调度、队列

d1fbcaeabe8b7ea707b5219586f12de1.png

流程:

46945884bc9b9f96935c46680ca79c39.png

1.1 创建event

php artisan make:event UserLogin

LoginController.php

/*** The user has been authenticated.** @param  IlluminateHttpRequest  $request* @param  mixed  $user* @return mixed*/protected function authenticated(Request $request, $user){event(new UserLogin($user));}

1.2 创建listener

1.2.1 方式一:手动创建

php artisan make:listener EmailAdminUserLogin --event=UserLogin

1.2.2 方式二:推荐如下方式:自动生成事件和监听

10年架构师领你架构-成长之路-(附面试题(含答案))

程序猿的生活:(腾讯T3-T4)打造互联网PHP架构师教程目录大全,只要你看完,薪资立马提升2倍(持续更新)​zhuanlan.zhihu.com
fb86653f868b2071fbaa6b32f41b56d3.png
//应用程序的事件监听器映射class EventServiceProvider extends ServiceProvider
{/*** The event listener mappings for the application.** @var array*/protected $listen = ['AppEventsUserLogin' => ['AppListenersUserLoginEmailAdminUserLogin','AppListenersUserLoginTraceUser','AppListenersUserLoginAddUserLoginCounter',],'AppEventsUserLogout' => ['AppListenersUserLogoutEmailAdminUserLogout','AppListenersUserLogoutTraceUser',],];/*** Register any events for your application.** @return void*/public function boot(){parent::boot();Event::listen('event.*', function ($eventName, array $data) {//});}
}

生成事件 & 监听器:php artisan event:generate

二、Laravel 的任务调度(计划任务)功能 Task Scheduling

2.1 call方式

protected function schedule(Schedule $schedule){$schedule->call(function (){Log::info('我是call方法实现的定时任务');})->everyMinute();}

执行:php artisan schedule:run

感谢大家一直来支持,这是我准备的1000粉丝福利

程序猿的生活:【1000粉丝福利】10年架构师分享PHP进阶架构资料,助力大家都能30K​zhuanlan.zhihu.com
a559b01e2b9d25e362c46a8b57293b2b.png

2.2 crontab方式

db71b4b8cd2a0c7d96720b761eaf5982.png

2.2 command方式

生成命令:php artisan make:command SayHello

<?phpnamespace AppConsoleCommands;use IlluminateConsoleCommand;class SayHello extends Command
{/*** The name and signature of the console command.** @var string*/protected $signature = 'message:hi';/*** The console command description.** @var string*/protected $description = 'Command description';/*** Create a new command instance.** @return void*/public function __construct(){parent::__construct();}/*** Execute the console command.** @return mixed*/public function handle(){//书写处理逻辑Log::info('早上好,用户');}
}

Kernel.php

protected function schedule(Schedule $schedule)
{$schedule->command('message:hi')->everyMinute();
}

执行:php artisan schedule:run

大厂2000道面试题(含答案)

程序猿的生活:PHP面试题汇总,看完这些面试题助力你面试成功,工资必有20-25K​zhuanlan.zhihu.com
a0e7ab7b3a9881d3a0498b12d5a2cdd7.png

三、队列任务

3.1 驱动的必要设置

QUEUE_DRIVER=database

如:数据库驱动

php artisan queue:tablephp artisan migrate

3.2 创建任务

生成任务类:

php artisan make:job SendReminderEmail
class SendReminderEmail implements ShouldQueue
{use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;public $user;/*** Create a new job instance.** @param User $user*/public function __construct(User $user){$this->user = $user;}/*** Execute the job.** @return void*/public function handle(){Log::info('send reminder email to user' . $this->user->email);}
}

3.3 分发任务

你写好任务类后,就能通过 dispatch 辅助函数来分发它了。唯一需要传递给 dispatch 的参数是这个任务类的实例:利用模型工厂生成30个用户:

f6fc0a20789070fce48b2bfb00e3b199.png
public function store(Request $request){$users = User::where('id','>',24)->get();foreach ($users as $user){$this->dispatch(new SendReminderEmail($user));}return 'Done';}
Route::get('/job', 'UserController@store');

数据库表jobs生成5个队列任务:

3675a68698321bdfd5c240f9b7fe7c31.png

3.4 运行队列处理器

php artisan queue:work

Tips:要注意,一旦 queue:work 命令开始,它将一直运行,直到你手动停止或者你关闭控制台

处理单一任务:你可以使用 --once 选项来指定仅对队列中的单一任务进行处理

php artisan queue:work --once

24bed8bc7b54f5d2fb4d84d48f73988e.png

拓展:使用 Beanstalkd 管理队列,Supervisor 则是用来监听队列的任务,并在队列存在任务的情况下自动帮我们去执行,免去手动敲 php artisan 的命令,保证自己的队列可以正确执行

致谢

谢谢你看到这里,有什么问题可以在评论区留言交流,谢谢!

喜欢我的文章就关注我吧,持续更新中.....

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以点击进入暗号:知乎。

原文链接:segmentfault.com

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

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

相关文章

pytorch微调bert_小版BERT也能出奇迹:最火的预训练语言库探索小巧之路

选自Medium作者&#xff1a;Victor Sanh机器之心编译参与&#xff1a;魔王过去一段时间&#xff0c;大模型层出不穷。在大家纷纷感叹「大力出奇迹」的时候&#xff0c;作为调用预训练语言模型最流行的库&#xff0c;HuggingFace 尝试用更少的参数量、更少的训练资源实现同等的性…

android 应用无法安装程序,朋友android设备无法安装我的Android应用程序,我甚至不能为我自己做...

我最近上传了我的android应用程序到市场https://market.android.com/details?idcom.DGNT&#xff0c;但我的朋友们不能将它安装在他们的设备上(说他们的手机不兼容)。该网站甚至说我自己的手机与我的应用程序不兼容&#xff0c;即使我已经通过eclipse编译了它&#xff0c;并成…

qsub 指定节点_PBS,QSUB常用命令

1、后台提交作业qsub语法: qsub [-a date_time] [-A account_string] [-e path] [-h] [-I] [-jjoin] [-k keep] [-l resource_list] [-m mail_options] [-nNode_allocation_Method [-L v1,[v2,[v3,[v4]]]]] [-M user_list] [-Nname] [-o path] [-p priority] [-q pool] [-r y|n…

if test 多条件_秒懂Python编程中的if __name__ == #39;main#39; 作用和原理

在大多数编排得好一点的脚本或者程序里面都有这段if __name__ main:1 这段代码的功能一个python的文件有两种使用的方法&#xff1a;第一是直接作为脚本执行&#xff0c;第二是import到其他的python脚本中被调用(模块重用)执行。因此if __name__ main: 的作用就是控制这两种情…

android复杂列表滑动卡顿,Android 列表滑动性能优化总结

列表滑动性能优化是一个老生常谈的问题&#xff0c;最近在做项目的时候又遇到了列表滑动卡顿的问题&#xff0c;我在经过多次思考和尝试后&#xff0c;终于找到了滑动卡顿的元凶&#xff0c;于是将经验总结下来。ViewHolder先说说最常规的ViewHolder。ViewHolder的出现是为了解…

php淘客发单_如何使用PHP的curl函数调用维易淘客接口

《如何使用PHP的curl函数调用维易淘客接口》要点&#xff1a;使用curl调用维易淘客接口高佣转链维易淘客接口是用GET方式调用的&#xff0c;直接用GET调用即可&#xff0c;以下用PHP为例&#xff1a;使用curl调用维易淘客接口高佣转链&#xff1a;$apihttp://api.vephp.com/hca…

python背景颜色怎么随机_Python中的随机颜色

我同意TigerhawkT3&#xff08;1&#xff09;你教授对pick_color()的实现是垃圾。但我不认为random.choice()&#xff0c;或者你教授滥用random.shuffle()的方式是最好的选择。两者的问题是&#xff0c;在连续调用时可以获得相同的颜色&#xff0c;这是在正方形内绘制正方形时不…

python 解决手机拍的书籍图片发灰的问题

老师给发的作业经常是手机拍的&#xff0c;而不是扫描&#xff0c;背景发灰&#xff0c;如果二次打印就没有看了&#xff0c;象这样&#xff1a; 如果使用photoshop 处理&#xff0c;有些地方还是扣不干净&#xff0c;不如python 做的好&#xff0c;处理后如下&#xff1a; 具体…

2016年cypher资源_2021-2027年中国鱿鱼行业市场供需规模及未来前景分析报告

报告类型&#xff1a;产业研究报告格式&#xff1a;电子版、纸介版、电子纸介出品单位&#xff1a;智研咨询官网链接&#xff1a;中国产业信息网 - 产业前景投资趋势门户-智研旗下产业信息咨询平台​www.chyxx.com报告链接&#xff1a;2021-2027年中国鱿鱼行业市场供需规模及未…

地面控制点的定义与作用_什么是地面塌陷

地面塌陷2020年1月13日&#xff0c;青海西宁市城中区一公交车站附近地面突然塌陷&#xff0c;一辆搭载乘客的公交车掉入坑中&#xff0c;致使9人遇难。2019年12月12日&#xff0c;厦门吕厝路口地铁1号线和2号线外的配套物业开发项目施工现场发生约500平方米地面塌陷&#xff0c…

html填满剩余空间,html – 标题,两侧填充剩余空间

我被要求创建这个标题,纯粹用css,它甚至可能吗&#xff1f;文本的背景需要保持透明,h2需要跨越任何容器的宽度,并且左右边框自动填充剩余空间.h2 {font-size:42px;line-height:48px;width:100%;overflow: hidden;&:before {content:;position:relative;padding-left:50px;p…

python代码自动生成器下载_Python代码生成器

iefans下载为用户提供的Python代码生成器是一款高效实用的多功能代码自动编辑软件&#xff0c;该软件采用Delphi语言开发&#xff0c;同时内置了大量的编程学习内容与百款实例代码&#xff0c;让用户能够使用Python代码生成器快速插入判断、流程控制、算法等重复性很高的架构&a…

animate动画案例_animate动画案例——小小购物狂

如今各平台小动画层出不穷&#xff0c;大部分这种二维动画都是animate或者flash做的&#xff0c;例如下面这种效果animate既可以将各种内容做成动画。既可以设计适合游戏、电视节目和 Web 的交互式动画。让卡通和横幅广告栩栩如生。也可以用来创作动画涂鸦和头像。并向电子学习…

男孩子不上学了学计算机要学历吗,十三岁男孩不上学,能学什么手艺?

十三岁男孩不上学,能学什么手艺?十三岁时的孩子,有些学校要求我们先上过义务教育再去学习,有些学校是允许十三岁就直接接受教育的,有些学校是对十三岁还在上半学的学生进行补习一下的。那么,十三岁男孩不上学,可以学什么手艺?其实,有很多孩子对自己在学校学习时未能掌握的知识…

iview select 怎么清空_如何解决iview 的select下拉框选项错位的问题,具体操作如下...

下面我就为大家分享一篇完美解决iview 的select下拉框选项错位的问题&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助。在使用iview的过程中&#xff0c;我遇到这样一个问题&#xff0c;在Model中使用select下拉框组件。但是当弹出框超过一屏需要滚动时&#xf…

numpy 拼接_数据分析-numpy的拼接与交换

1.数组的拼接import numpy as npt1np.arange(24).reshape((4,6))t2np.arange(100,124).reshape((4,6))print(t1)print("*"*50)print(t2)print("*"*50)#竖直拼接t3np.vstack((t1,t2))print(t3)print("*"*50)#水平拼接t4np.hstack((t1,t2))print(t…

在HTML标签中 lt h5 gt 表示,HTML lt;blockquotegt; 标签

HTML <blockquote> 标签2020-12-04定义和用法标签定义块引用。与 之间的所有文本都会从常规文本中分离出来&#xff0c;经常会在左、右两边进行缩进(增加外边距)&#xff0c;而且有时会使用斜体。也就是说&#xff0c;块引用拥有它们自己的空间。全局属性标签支持HTML中的…

shell 做加法运算_使用shell脚本实现加法乘法运算

编写一个shell脚本&#xff0c;实现加法和乘法运算。#!/bin/bash#Function:num1num2 num3*num4sum(){read -p "please key in first number:" num1read -p "please key in second number:" num2let num3${num1}${num2}echo -e "\033[32m $num1 $num2…

iptables 指定网卡_LINUX系统下的IPTABLES防火墙系统讲解(二)实战操作

iptables数据流方向iptables操作命令:#iptables --helpUsage: iptables -[AD] chain rule-specification [options]iptables -[RI] chain rulenum rule-specification [options]iptables -D chain rulenum [options]iptables -[LFZ] [chain] [options]iptables -[NX] chainipta…

计算机应用技术环境评估,计算机应用教程(第7版)(Windows 7与Office 2007环境)习题解答与上机练习...

计算机应用教程(第7版)(Windows 7与Office 2007环境)习题解答与上机练习语音编辑锁定讨论上传视频《计算机应用教程(第7版)(Windows 7与Office 2007环境)习题解答与上机练习》是2012年9月21日清华大学出版社出版的图书&#xff0c;作者是潘晓南、游语秋、张京、陈洁。[1]书 …