beanstalkd 消息队列发邮件
放入消息
/**
* 获取beanstalk实例
*
* @staticvar resource|bool $beanstalk
* @return resource
*/
function get_beanstalk() {
static $beanstalk = FALSE;
if ($beanstalk) {
return $beanstalk;
}
include_once APPPATH . 'libraries/beanstalkd/pheanstalk_init.php';
//加载配置文件
$CI =& get_instance();
$CI->config->load('beanstalkd');
$bean_config = $CI->config->item('beanstalk_server');
$beanstalk = new Pheanstalk_Pheanstalk($bean_config['host'], $bean_config['port']);
return $beanstalk;
} /**
* 发送到队列函数
*
* @param string $tube 队列名称
* @param string $info 写入到队列的信息
* @param int $priority 队列优先级
* @param int $delay 迁移到正式发送队列的延迟时间
* @param int $ttr 队列reserve后的过期时间
* @return bool
*/
function send2queue($tube, $info, $priority = , $delay = , $ttr = ) {
$pheanstalk = get_beanstalk();
$res = $pheanstalk->useTube($tube)->put( $info, $priority, $delay, $ttr );
return $res;
}
自动脚本读取队列,发送消息
/**
* 發送邮件
*/
public function send_email() {
$pheanstalk = get_beanstalk();
while ( $job = $pheanstalk->watch(Queue::SEND_EMAIL)->ignore("default")->reserve() ) {
$res = $job->getData();
$res = json_decode($res, TRUE);
$email_cc = '';
$email_bcc = '';
if(isset($res['email_addr'],$res['email_title'],$res['email_content'])) {
if (isset($res['email_cc'])) $email_cc = $res['email_cc'];
if (isset($res['email_bcc'])) $email_bcc = $res['email_bcc'];
$ret = send_email($res['email_addr'],$res['email_title'],$res['email_content'],$email_cc,$email_bcc);
if(!$ret) {
log_msg('queue_send_email_error.log','email_addr:'.$res['email_addr'].' email_title:'.$res['email_title'].' email_cc:'.$email_cc.' email_bcc:'.$email_bcc.' email_content:'.$res['email_content']);
}
}
$pheanstalk->delete($job);
}
} function send_email($to, $subject, $content, $cc='', $bcc='') {
include_once APPPATH . 'libraries/swiftmailer/swift_required.php';
$transport = Swift_SmtpTransport::newInstance('mail.fastweb.com.cn', )
->setUsername('11@qq.com')
->setPassword('safasfafa');
$mailer =Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance()
->setSubject($subject)
->setFrom(array('11@qq.com' =>'qq管理员'))
->setTo($to)
->setContentType('text/html')
->setCharset('utf-8')
->setBody($content); $cc != '' && $message->setCc($cc);
$bcc != '' && $message->setBcc($bcc); return $mailer->send($message);
}
beanstalkd 消息队列发邮件的更多相关文章
- beanstalkd 消息队列
概况:Beanstalkd,一个高性能.轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Faceb ...
- Beanstalkd消息队列 -- php类Pheanstalk使用
业务场景 商城订单生成30分钟后 如果未支付关闭订单 解决办法 可以使用延迟消息队列 这里我们用的是beanstalkd Beanstalkd介绍 Beanstalk,一个高性能.轻量级的分布式内 ...
- 【Beanstalkd】Beanstalkd消息队列的安装与使用
一.Beanstalkd是什么? Beanstalkd是一个高性能,轻量级的分布式内存队列 二.Beanstalkd特性 1.支持优先级(支持任务插队)2.延迟(实现定时任务)3.持久化(定时把内存中 ...
- laravel5.6 基于redis,使用消息队列(邮件推送)
邮件发送如何配置参考:https://www.cnblogs.com/clubs/p/10640682.html 用到的用户表: CREATE TABLE `recruit_users` ( `id` ...
- Beanstalkd消息队列的安装与使用
一.Beanstalkd是什么? Beanstalkd是一个高性能,轻量级的分布式内存队列 二.Beanstalkd特性 1.支持优先级(支持任务插队)2.延迟(实现定时任务)3.持久化(定时把内存中 ...
- .Net下的MSMQ(微软消息队列)的同步异步调用
一.MSMQ简介 MSMQ(微软消息队列)是Windows操作系统中消息应用程序的基础,是用于创建分布式.松散连接的消息通讯应用程序的开发工具.消息队列 和电子邮件有着很多相似处,他们都包含多个属性, ...
- RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙
消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...
- 消息队列 ActiveMQ 、RocketMQ 、RabbitMQ 和 Kafka 如何选择?
「 预计阅读 6 分钟 」 旁白:这是一篇拖更了N久的文章...0.0(看不见我~) 往期回顾 前端框架 jQuery 和 Vue 如何选择? 安全框架 Shiro 和 Spring Security ...
- 消息队列 RabbitMQ 与 Spring 整合使用
一.什么是 RabbitMQ RabbitMQ 是实现 AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不俗.消 ...
随机推荐
- Caffe系列3——制作Hdf5数据源详细教程(手把手教你制作Hdf5数据源)
制作Hdf5数据源详细教程
- Luogu P4158 [SCOI2009]粉刷匠(dp+背包)
P4158 [SCOI2009]粉刷匠 题意 题目描述 \(windy\)有\(N\)条木板需要被粉刷.每条木板被分为\(M\)个格子. 每个格子要被刷成红色或蓝色. \(windy\)每次粉刷,只能 ...
- CodeForces-510D
https://vjudge.net/problem/CodeForces-510D题目可以转化为花最小代价选一些数,然后这些数可以经过加减运算得到1或-1,不然1你就凑不出来,一旦凑出来1,其他的都 ...
- iOS开发使用UIScrollView随笔
1.scrollview滚动到固定偏移量contenOffset - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)anim ...
- Android基础控件单选按钮RadioButton和Checkbox复选按钮的使用
1.相关简介 RadioButton需要和RadioGroup结合使用,在RadioGroup设置布局方式! Checkbox是单独使用,本文为了方便放在了RadioGroup中! 2.简单使用 方法 ...
- 组件component
<!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...
- Cocos2d-x发布Android.mk 导入所有cpp
#traverse all the directory and subdirectorydefine walk $(wildcard $(1)) $(foreach e, $(wildcard $(1 ...
- [原创]关于时间格式的坑(kk:mm:ss、HH:mm:ss与hh:mm:ss)
笔者在项目中使用 kk:mm:ss表示24小时制,却发现与所想的不同,特记此坑,提醒众人: kk:mm:ss 24小时制,时间为1:00:00-24:59:59 HH:mm:ss 24小时制,时间 ...
- 编写函数处理user_list,新方法
写函数,完成以下功能: # 例如有: user_list=[ {"name": "alex","hobby":"抽烟"} ...
- springboot4.1.1的log4j2配置
一.默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台: 日志输出内容元素具体如下: 时间日期:精确到毫秒 日志级别:ERROR, WARN, INFO, D ...