apache license 2.0如何使用防止法律纠纷_Thinkphp + queue 使用队列进行 邮件通知

9768230708468d55f58672142daa6e77.png

环境

thinkphp5.1
redis
"topthink/think-queue": "2.0.*"
复制代码

queue 配置环境 config/queue.php

<?php 
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
return [
// 'connector' => 'Sync'


//Redis驱动
'connector' => 'redis',
"expire" => 60,//任务过期时间默认为秒,禁用为null
"default" => "default",//默认队列名称
"host" => Env::get("redis.host", "127.0.0.1"),//Redis主机IP地址
"port" => Env::get("redis.port", 6379),//Redis端口
"password" => Env::get("redis.password", "123456"),//Redis密码
"select" => 5,//Redis数据库索引
"timeout" => 0,//Redis连接超时时间
"persistent" => false,//是否长连接

];


复制代码

生产者

<?php /**
* Created by.
* User: Jim
* Date: 2020/11/14
* Time: 10:25
*/namespace app\index\controller;use think\Controller;use think\Queue;/**
* 发布一个任务
* Class JobTest
* @package app\index\controller
*/class Index extends Controller
{public function index()
{// 当轮到该任务时,系统将生成一个该类的实例,并调用其 fire 方法
$jobHandlerClassName = 'app\index\job\Email';// 2.当前任务归属的队列名称,如果为新队列,会自动创建
$jobQueueName = "userRegisterEmailNoticeQueue1";// 3.当前任务所需的业务数据 . 不能为 resource 类型,其他类型最终将转化为json形式的字符串
$jobData = ['create_time'=>time(),'queue_name'=>$jobQueueName,'task_type'=>$jobHandlerClassName,'data'=>'data',
];// 4.将该任务推送到消息队列,等待对应的消费者去执行
$isPushed = Queue::push($jobHandlerClassName, $jobData, $jobQueueName);if ($isPushed !== false) {echo date('Y-m-d H:i:s') . "用户注册邮箱通知加入队列成功" . "
";
} else {echo '用户注册邮箱通知加入队列失败.';
}
}
}复制代码

消费者

<?php /**
* Created by.
* User: Jim
* Date: 2020/11/14
* Time: 10:32
*/namespace app\index\job;use think\Db;use think\queue\Job;class Email
{public function fire(Job $job, $data)
{
$isJobDone = $this->JobDone($data);if ($isJobDone) {// 如果任务执行成功, 记得删除任务
$job->delete();print("-------------------".date('Y-m-d H:i:s',$data['create_time'])."-邮件已发送成功,已经删除这个队列了-------------------" . PHP_EOL);
} else {if ($job->attempts() > 3) {//通过这个方法可以检查这个任务已经重试了几次了print("Hello Job has been retried more than 3 times!" . "\n");
$job->delete();// 也可以重新发布这个任务//print("Hello Job will be availabe again after 2s."."\n");//$job->release(2); //$delay为延迟时间,表示该任务延迟2秒后再执行
}
}
}/**
* 根据消息中的数据进行实际的业务处理...
*/private function JobDone($data)
{/**
* 执行邮件通知
*
*/
sleep(1);
Db::name('queue')->insert($data);return true;
}
}复制代码

使用

访问http://www.tp5.cc/ (本地虚拟主机) 创建一个队列(生产者)

进入项目目录
cd queue

执行(可以使用定时任务)(消费者)
php think queue:work --daemon --queue userRegisterEmailNoticeQueue1

End

来源:https://juejin.cn/post/6894824585766961166

cea6c7c77fc796fffae35c5dcae866c7.png

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

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

相关文章

.net core 正则表达式 获取 等号后面的值_Python3 正则表达式

Python人工智能 - python 人工智能-神经网络 - 创客学院直播室​www.makeru.com.cnPython AI开发实战营 - Day2:Python世界中的封装与异常 - 创客学院直播室​www.makeru.com.cnPython AI开发实战营 - Python开发必备之网络编程 - 创客学院直播室​www.makeru.com.cnpython高级…

html中把句子往右边弄一点咋办,CSS上的左,中,右对齐方法,可以在一行上混合...

一种用CSS以左对齐/中心对齐/右对齐方式显示用HTML编写的句子的方法在用“从左到右书写的语言”(如日语和英语)中编写的HTML中&#xff0c;除非指定了字符移位方向&#xff0c;否则句子左对齐显示。但是&#xff0c;当您想要将标题和标题(居中)居中并发布它们时&#xff0c;这种…

如何用计算机装手机系统,如何用手机usb重装电脑系统

随着科技的不断发展&#xff0c;电脑已经成为我们在日常生活中不可或缺的工具&#xff0c;但使用久了难免也会出现些系统故障。这时就需要我们使用u盘重装系统了&#xff0c;可具体要怎么操作呢&#xff1f;想知道的话&#xff0c;就往下来看看我整理的u盘重装电脑系统教程吧。…

计算机英语词汇音频,[听单词] 计算机专业英语词汇音频84,计算机英语单词MP3

eventdriven n.事件驱动的plated film medium n.电镀薄膜记录媒体(电镀薄膜记录介质)writetoread crossfeed n.写读串扰effective radiated power 有效发射功率mixed number n.混合数optical multimode dispersion 光多模分散descriptive error 描述误差secondary terminal add…

aspen怎么做灵敏度分析_不会敲代码怎么做智能分析?用奥威商业智能BI

不会敲代码&#xff0c;怎么学也不会&#xff0c;那怎么做大数据智能分析&#xff1f;说来也简单&#xff0c;用商业智能BI软件就行。拖拉拽就能做报表&#xff0c;点击即可智能分析&#xff0c;即使是没有IT基础&#xff0c;完全不会敲代码的人也能轻松抽取数据做智能分析。商…

sqlplus中调用shell_记一次突破反弹shell

这是 酒仙桥六号部队 的第 106 篇文章。全文共计1809个字&#xff0c;预计阅读时长6分钟。背景某天闲着无聊&#xff0c;小伙伴发来一个某网站&#xff0c;说只能执行命令&#xff0c;不能反弹shell。测试对着目标站点一顿测试。发现确实存在shiro反序列化&#xff0c;并且存在…

计算机专业简历推荐信范文,个人简历自我推荐信范文【三篇】

【导语】自我推荐信在个人简历中是一个比较重要的环节&#xff0c;一般自荐信简单抓住重点就行了。以下是无忧考网为大家精心搜集和整理的个人简历自我推荐信范文&#xff0c;希望大家喜欢&#xff01;【篇一】尊敬的领导&#xff1a;您好!衷心感谢您能在百忙之中抽出宝贵的时间…

scrapy获取a标签的连接_Python爬虫 scrapy框架初探及实战!

Scrapy框架安装操作环境介绍操作系统&#xff1a;Ubuntu19.10Python版本&#xff1a;Python3.7.4编译器&#xff1a;pycharm社区版安装scrapy框架(linux系统下)安装scrapy框架最繁琐的地方在于要安装很多的依赖包,若缺少依赖包&#xff0c;则scrapy框架的安装就会报错。不过ana…

怎么用计算机计算年月份,如何使用Excel计算两个日期之间的月数?

一、这可以通过DATEDIF函数完成。二、 DATEDIF函数的定义DATEDIF函数是Excel中的隐藏函数&#xff0c;而不是帮助和插入公式中的隐藏函数。返回两个日期之间的年\月\日间隔的数量。 DATEDIF函数通常用于计算两个日期之间的时差。语法DATEDIF(开始日期&#xff0c;结束日期&…

卖金鱼的地方_1个水族店,5个周转箱,卖鲫鱼和泥鳅,老板对水族的热爱

大家好&#xff0c;欢迎来到一二水族。从北京回到邯郸老家&#xff0c;才让我有了大开眼界的感觉&#xff0c;为什么这么说呢&#xff1f;以前经常去大型观赏鱼市场&#xff0c;见到的都是高级海缸&#xff0c;大型草缸&#xff0c;或者雨林缸&#xff0c;一直陶醉在这样的氛围…

为什么计算机关机慢,电脑关机慢是什么原因 电脑关机慢的原因【图文】

使用过电脑的朋友都知道&#xff0c;在初期电脑关机是相当的快的&#xff0c;可是使用越久就会发现&#xff0c;电脑的关机速度减慢了许多&#xff0c;平时只需要30秒那样就可以关机了&#xff0c;到了最后居然要一分多钟关个电脑&#xff0c;为什么关机的时间变慢了呢?为什么…

mirna富集分析_经验之谈丨生信分析文章套路原来这么简单!

近两年&#xff0c;不做实验或者仅需要少量实验的生物信息学分析文章&#xff0c;发表量越来越多。如果利用数据库检索&#xff0c;高效的发出一篇文章。是科研工作者关注的话题&#xff0c;今天我们就用一篇生信分析的文章作为切入点&#xff0c;来谈谈生信分析文章的套路。1.…

a jquery 标签点击不跳转_form标签的action属性怎么用?form标签action属性的用法介绍(附实例)...

本篇文章主要的介绍了关于HTML中form标签action属性的用法介绍和实例&#xff0c;还有关于form标签的action属性的定义和语法介绍&#xff0c;最后徐还有关于form标签的action属性的作用解释。现在让我们一起来看吧。我们先来介绍HTML中form标签的action属性的含义&#xff1a;…

后发送过慢的问题_点胶阀使用常见问题怎么解决

点胶阀是在点胶作业中必不可少的配件之一&#xff0c;在点胶过程中点胶阀遇到问题该怎么解决呢&#xff0c;今天阿莱思斯给大家进行分析。1.点胶阀无法停胶问题&#xff1a;a.点胶阀中转杆或密封装置磨损。b.点胶阀的供给气压无法打开2.点胶阀针头滴胶&#xff0c;主要是以下几…

dns备用服务器信息,dns服务器地址(dns首选和备用填多少)

dns服务器地址DNS是计算机域名体系(DomainNameSystem或DomainNameService)的缩写&#xff0c;它是由解析器以及域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址&#xff0c;并具有将域名转换为IP地址功用的服务器。其中域名有必要对应一个IP地址&am…

接口传值后不起作用_前端工程师吐后端工程师(第八讲)——接口的开发

上一讲我们介绍了如何写让模板变量在页面上展示&#xff0c;本讲我们介绍一下后端开发工作中最常用的功能——接口。创建一个go_test4文件夹&#xff0c;然后把go_test3中的代码复制进去。然后打开main.go文件&#xff0c;进行更改。说到接口就必不可少的涉及到传值和接口返回&…

css选择器按功能分,CSS 选择器

概览在 CSS 中&#xff0c;选择器用于选择需要添加样式的元素。CSS 选择器非常丰富&#xff0c;现将 CSS 1 - 3 目前所有的选择器列举如下。选择器例子例子描述CSS版本.class.intro选择 class"intro" 的所有元素。1#id#firstname选择 id"firstname" 的元素…

tensor数据类型转换_PyTorch的tensor数据类型及其相关转换

1 基本类型PyTorch的数据类型为各式各样的tensor&#xff0c;tensor可以理解为高维矩阵&#xff0c;与Numpy中的array类似。PyTorch中的tensor包括CPU上的数据类型和GPU上的数据类型。Torch定义了七种CPU tensor类型和八种GPU tensor类型。通过使用type函数可以查看变量类型&am…

cli3解决 ie11语法错误 vue_【VUE3.0】它来了,2020年09月18日,Vue.js 3.0 正式发布,但是........

您曾见过凌晨的苹果发布会&#xff0c;那前端界的发布会你见过吗&#xff1f;在Vue3正式发布前&#xff0c;Vue的作者尤雨溪发表主题演讲。注意&#xff01;注意&#xff01;注意&#xff01;发布会中表示不建议大家立刻升级到Vue3.0版本&#xff0c;之前项目中某些依赖项可能还…

centos修改磁盘uuid_为什么MySQL用uuid做主键会被骂?

“ 在 MySQL 中设计表的时候&#xff0c;MySQL 官方推荐不要使用 uuid 或者不连续不重复的雪花 id(long 形且唯一&#xff0c;单机递增)&#xff0c;而是推荐连续自增的主键 id&#xff0c;官方的推荐是 auto_increment。那么为什么不建议采用 uuid&#xff0c;使用 uuid 究竟有…