当前位置: 首页 > news >正文

陕西交通建设集团西长分公司网站找人做网站注意

陕西交通建设集团西长分公司网站,找人做网站注意,建设网站和app,2023年8月新闻热点事件消费信息如下ThinkPHP5 Queue消息队列优点1、Queue内置了 Redis#xff0c;Database#xff0c;Topthink #xff0c;Sync这四种驱动#xff0c;本文使用Redis驱动2、Queue消息队列适用于大并发或者返回结果 时间有点长并需要批量操作的第三方接口#xff0c;可用于短信发…消费信息如下ThinkPHP5 Queue消息队列优点1、Queue内置了 RedisDatabaseTopthink Sync这四种驱动本文使用Redis驱动2、Queue消息队列适用于大并发或者返回结果 时间有点长并需要批量操作的第三方接口可用于短信发送、邮件发送、APP推送3、Queue消息消息可进行发布获取执行删除重发失败处理延迟执行超时控制等操作流程图创建队列文件路径application\common\queue\TestQueue.phpTestQueue.php 参考代码namespace app\common\queue;use think\facade\Log;use think\queue\Job;class TestQueue{public function fire(Job $job, $data){$isJobDone $this-testJob($data);// 如果任务执行成功后 记得删除任务不然这个任务会重复执行直到达到最大重试次数后失败后执行failed方法if ($isJobDone) {$job-delete();} else {//通过这个方法可以检查这个任务已经重试了几次了$attempts $job-attempts();echo $attempts;if ($attempts 0 || $attempts 1) {// 重新发布这个任务$job-release(2); //$delay为延迟时间延迟2S后继续执行} elseif ($attempts 2) {$job-release(5); // 延迟5S后继续执行}}}/*** Desc: 任务执行失败后自动执行方法* param $data*/public function failed($data){// ...任务达到最大重试次数后失败了Log::error(任务达到最大重试次数后失败了 .json_encode($data));}/*** Desc: 自定义需要加入的队列任务*/private function testJob($data){$jsonData json_encode($data);echo 1、具体执行任务接受到的参数{$jsonData} \r\n;if($data){echo 2、恭喜你{$data[email]} 邮件发送成功了 \r\n;return true;}else{echo 2、很遗憾{$data[email]} 邮件发送失败了 \r\n;return false;}}}配置队列1、这里使用Redis驱动来存储队列消息2、队列配置文件路径application\config\queue配置参考代码return [connector Redis,expire 3600,default REDIS_QUEUE,host dnmp-redis,port 6379,password ,select 0,timeout 0,persistent false,];生产者参考代码/*** Desc: 生产者生产消息*/public function productMsg(){// 当前任务所需的业务数据不能为 resource 类型其他类型最终将转化为json形式的字符串$data [email rand(11,99).qq.com,username Tinywan];// 当前任务归属的队列名称如果为新队列会自动创建$queueName testQueue;// 将该任务推送到消息队列等待对应的消费者去执行$isPushed Queue::push(TestQueue::class, $data, $queueName);// database 驱动时返回值为 1|false; redis驱动时返回值为 随机字符串|falseif ($isPushed ! false) {echo [.$data[email].]. 队列加入成功 \r\n;} else {echo 队列加入失败 \r\n;}}为了方便演示这里使用cli模式。执行生产者php product_msg.php# php product_msg.php[27qq.com] 队列加入成功# php product_msg.php[77qq.com] 队列加入成功1、这时候消息已经被持久化到Redis中去了(通过列表去存储)2、推送成功虽然我们这时候已经写好了消费者但是我们并没有开始消费。但是推送消息依然是成功的。这个就是中间件的优势。他连接两个系统但是又不会互相耦合生产者并不会因为消费者的异常而影响到自己。3、消息推送成功之后如果没有消费者消息会堆积在队列中。不过别怕消息堆积很正常并且一般的中间件堆积能力是非常强的。比如阿里就宣传自己mq可以堆积上亿条数据。查看Redis消息与队列 docker exec -it dnmp-redis redis-cli127.0.0.1:6379 keys *127.0.0.1:6379 keys *1) queues:testQueue127.0.0.1:6379 TYPE queues:testQueuelist127.0.0.1:6379 LRANGE queues:testQueue 0 -11) {\job\:\app\\\\common\\\\queue\\\\TestQueue\,\data\:{\email\:\27qq.com\,\username\:\Tinywan\},\id\:\MLgNb4LFALhtmp7HZtfXMFPRUT0r94Bi\,\attempts\:1}2) {\job\:\app\\\\common\\\\queue\\\\TestQueue\,\data\:{\email\:\77qq.com\,\username\:\Tinywan\},\id\:\JM16vvjMylfJDnOpldJaHda8xMwuYYzP\,\attempts\:1}127.0.0.1:6379消费者开始消费消息。执行cli 命令 php think queue:work--queue队列名称# php think queue:work --queue testQueue1、具体执行任务接受到的参数 {email:27qq.com,username:Tinywan}2、恭喜你27qq.com 邮件发送成功了Processed: app\common\queue\TestQueue这里每消费掉一条消息Redis数据库中将会减少一条消息查看Redis队列消息127.0.0.1:6379 LRANGE queues:testQueue 0 -11) {\job\:\app\\\\common\\\\queue\\\\TestQueue\,\data\:{\email\:\77qq.com\,\username\:\Tinywan\},\id\:\JM16vvjMylfJDnOpldJaHda8xMwuYYzP\,\attempts\:1}127.0.0.1:6379命令行挂起守护进程执行/usr/bin/php /var/www/tp5/think queue:work --daemon --queue testQueue --memory 256--daemon 是否循环执行如果不加该参数则该命令处理完下一个消息就退出 --queue 要处理的队列的名称 --delay 0 如果本次任务执行抛出异常且任务未被删除时设置其下次执行前延迟多少秒默认为0。 --memory 该进程允许使用的内存上限以M为单位。流程图消费信息如下php think queue:work --daemon --queue testQueue1、具体执行任务接受到的参数 {email:77qq.com,username:Tinywan}2、恭喜你77qq.com 邮件发送成功了Processed: app\common\queue\TestQueue1、具体执行任务接受到的参数 {email:80qq.com,username:Tinywan}2、恭喜你80qq.com 邮件发送成功了Processed: app\common\queue\TestQueue1、具体执行任务接受到的参数 {email:34qq.com,username:Tinywan}2、恭喜你34qq.com 邮件发送成功了Processed: app\common\queue\TestQueue1、命令行模式可以常驻内存不停的执行php代码。这样就可以达到类似于静态语言的java的效果。2、一开始监听队列。刚刚在队列中堆积的消息立刻就被获取到开始执行了代码。最后执行完成删除了消息。3、在 queue:work--daemon 单进程循环消费的时候改了代码是不会生效的。这时脚本语言有点类似于静态语言在执行。所以需要我们用queue:restart重启 work 进程 。命令行挂起守护进程执行/usr/local/php/bin/php /data/wwwroot/default/thinkphp_5/think queue:work --daemon --queue testQueue --memory 256查看进程是否在运行# psPID USER TIME COMMAND1 root 0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf)6 www-data 0:00 php-fpm: pool www7 www-data 0:00 php-fpm: pool www16 root 0:00 sh56 root 0:00 sh113 root 0:00 php think queue:work --daemon --queue testQueue你再也不用守在终端了以后只负责生产消息就可以了。Redis队列也不会积累消息了其他(中间件)中间件系统的定义是两个独立的不同的系统在中间构建起传递消息的工具。但是同一个系统也可以通过中间件来榨取性能大家肯定项目中遇到过性能瓶颈。比如发送邮件发送短信转换视频格式等等。这些业务都是比较耗性能又对先后顺序不敏感的业务。这种业务就非常适合使用消息队列系统来异步处理使性能提升。重启队列和生成队列
http://www.pierceye.com/news/406864/

相关文章:

  • 企业网站建设专业精准丨 鸣远科技网站建设会议验收
  • 网站建设在哪里做比较好广东网站设计公司
  • 什么叫域名访问网站六安网络科技有限公司
  • 江苏省城乡与建设厅网站首页文山网站建设兼职
  • 做网站用什么系统好二手商标网
  • 福州网站建设公司哪个好做芯片代理哪个网站推广
  • 怎么制作钓鱼网站链接乐山网站营销推广哪家公司好
  • 一键网站制作定制网站型网站开发
  • 营销型网站开发流程包括辽宁建设工程信息网新网址
  • 宁德企业网站建设网站开发成本包括
  • 茂名建设中专学校网站如何做国际贸易网站
  • 自己办网站网站开发多久
  • wordpress 图表插件网站seo找准隐迅推
  • 欧美网站设计网站制作基础教程
  • wordpress显示icp备案号手机关键词排名优化
  • 网站建设与管理属于什么部门自助建站 知乎
  • 成都网站开发哪个好常州建网站
  • 陕西住房与城乡建设厅网站从化市营销型网站建设
  • 如何在网站上做推广自己做网站的图片
  • 珠海模板网站建设wordpress 底部工具栏
  • 网站建设的业务流程图招聘网站上找在家做
  • 网站设计的工具盱眙在仕德伟做网站的有几家
  • 建设一个网站要花多少时间临沂网站网站建设
  • 南宁网站推广经理做动漫网站如何应用数据绑定
  • 眼镜东莞网站建设兰州公司做网站
  • 改成 响应式 网站重庆微信企业网站
  • 用微信怎么做商城网站微信官网下载安装
  • 汽车网站建设方案预算md风格的wordpress主题
  • 免费外贸网站模板dede 网站栏目管理
  • 做网站有包括哪些东西站长素材网