apache license 2.0如何使用防止法律纠纷_Thinkphp + queue 使用队列进行 邮件通知
环境
thinkphp5.1redis"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
apache license 2.0如何使用防止法律纠纷_Thinkphp + queue 使用队列进行 邮件通知相关推荐
- apache license 2.0如何使用防止法律纠纷_go语言使用Swaggo详细教程
相信很多程序猿和我一样不喜欢写API文档.写代码多舒服,写文档不仅要花费大量的时间,有时候还不能做到面面具全.但API文档是必不可少的,相信其重要性就不用我说了,一份含糊的文档甚至能让前后端人员打起来 ...
- Apache License 2.0: 原文(英文/中文)
将Apache License 2.0的内容搬运于此,便于查阅. Apache License 2.0(英文) License正文 Apache License Version 2.0, Januar ...
- 开源许可违反:案例说明(Apache License 2.0)
Apache License 2.0是一种对商业非常友好的开源许可证,但是即使如此还是会发生一些使用上违反的示例,这篇文章通过一个具体的示例来进行说明. 案例 2020年6月份,Apache顶级项目的 ...
- Github如何添加合适的开源License(Apache License 2.0、MIT License、GPL3)
本文为作者学习开源许可的笔记 欢迎交流讨论,喜欢的话点个赞吧 欢迎去看我的主页: NicholasYe's Hompage. 1.如何添加一个开源License 在github自己的项目界面中点击Ad ...
- Apache License 2.0介绍
Apache License 2.0介绍 Apache LicenseVersion 2.0, January 2004http://www.apache.org/licenses/TERMS AND ...
- 开源协议:在项目中使用Apache License 2.0
Apache License 2.0的使用限制有很多介绍,这篇文章说明一下在项目中使用Apache License 2.0的步骤和注意事项. 最常见的理解误区 在项目的根目录下,创建一个LISENCE ...
- java license 开源_MinIO:一个基于Apache License v2.0开源协议的对象存储服务
MinIO Quickstart Guide--快速入门 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务.它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构 ...
- Apache LICENSE 2.0 授权介绍
当我们使用github或者其它地方的开源项目时候,需要注意开源项目的授权协议.开源不等于免费使用,如果公司使用开源项目时候违反其开源协议,有可能给公司或者个人带来版权纠纷.使用时候需要慎重阅读开源代码 ...
- Apache License Version 2.0 (Apache 2.0 开源协议)
Apache 2.0 开源协议的核心内容是以保护和尊重原作者的著作权为主要目的.对使用,复制,修改,商用不做过多限制,但必须包含原著的License信息. 公司或项目在使用 Apache Licens ...
最新文章
- 《Cacti实战》——第1章 认识Cacti
- java html 字符串截取字符串长度_Java截取带html标签的字符串,再把标签补全(保证页面显示效果)...
- 《Redis 设计与实现》读书笔记-Redis 对象
- 教学思路SQL之入门习题《学生成绩》 二、基础单表查询
- [Leedcode][JAVA][第572题][另一个树的子树]
- 使用软链接的方式迁移Docker
- bootstrap 输入错误提示_win7系统提示explorer.exe应用程序错误怎么办
- 2.图像作为函数 | 初探数字图像_3
- k8s、jenkins集成
- 管理科学の学生自学CS的【计划】与【心得】
- 使用FlashBoot3.2c 将 U 盘制作成 DOS 启动盘
- 电力猫服务器的网页,电力猫方案完美解决家庭网络布局
- python根据身高计算标准体重_有谁知道如何根据身高计算标准体重
- google统计产品
- 刚申请的博客,就发一个老师让做的“一分钟打动面试官”作业做为纪念吧!!!...
- Android仿QQ微信开场导航以及登陆界面
- linux查询iscsi服务,使用Linux的tgtd提供iscsi服务
- java中接口可以继承接口吗?
- Cytoscape.js – 用于数据分析和可视化的交互图形库
- PHP数组去重/高德地图API
热门文章
- postgres 把一个表的值转成另一个表的字段名_用LUT来做一个可动态配置的卷积核...
- nginx文件系统大小_详解Nginx系列
- python爬虫之逆向破解_Python爬虫进阶之APP逆向(二)
- oracle分组后伪列,Oracle伪列和伪表和分组函数(row_number,Rank)
- vsftpd设置被动模式_(1)vsftpd主、被动模式iptables配置方法
- MySQL 服务无法启动--服务没有报告任何错误 ---Failed to find valid data directory.
- 爱奇艺怎么开启数据流量自动播放
- IE浏览器高级设置如何还原
- 爱奇艺视频如何联系客服?爱奇艺联系客服攻略
- 学习Spring Boot:(十一) 自定义装配参数