放入消息

/**
* 获取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 消息队列发邮件的更多相关文章

  1. beanstalkd 消息队列

    概况:Beanstalkd,一个高性能.轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Faceb ...

  2. Beanstalkd消息队列 -- php类Pheanstalk使用

    业务场景 商城订单生成30分钟后 如果未支付关闭订单 解决办法 可以使用延迟消息队列   这里我们用的是beanstalkd Beanstalkd介绍 Beanstalk,一个高性能.轻量级的分布式内 ...

  3. 【Beanstalkd】Beanstalkd消息队列的安装与使用

    一.Beanstalkd是什么? Beanstalkd是一个高性能,轻量级的分布式内存队列 二.Beanstalkd特性 1.支持优先级(支持任务插队)2.延迟(实现定时任务)3.持久化(定时把内存中 ...

  4. laravel5.6 基于redis,使用消息队列(邮件推送)

    邮件发送如何配置参考:https://www.cnblogs.com/clubs/p/10640682.html 用到的用户表: CREATE TABLE `recruit_users` ( `id` ...

  5. Beanstalkd消息队列的安装与使用

    一.Beanstalkd是什么? Beanstalkd是一个高性能,轻量级的分布式内存队列 二.Beanstalkd特性 1.支持优先级(支持任务插队)2.延迟(实现定时任务)3.持久化(定时把内存中 ...

  6. .Net下的MSMQ(微软消息队列)的同步异步调用

    一.MSMQ简介 MSMQ(微软消息队列)是Windows操作系统中消息应用程序的基础,是用于创建分布式.松散连接的消息通讯应用程序的开发工具.消息队列 和电子邮件有着很多相似处,他们都包含多个属性, ...

  7. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

    消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...

  8. 消息队列 ActiveMQ 、RocketMQ 、RabbitMQ 和 Kafka 如何选择?

    「 预计阅读 6 分钟 」 旁白:这是一篇拖更了N久的文章...0.0(看不见我~) 往期回顾 前端框架 jQuery 和 Vue 如何选择? 安全框架 Shiro 和 Spring Security ...

  9. 消息队列 RabbitMQ 与 Spring 整合使用

    一.什么是 RabbitMQ RabbitMQ 是实现 AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不俗.消 ...

随机推荐

  1. 编写main方法

  2. 1 环境搭建_及参考资料介绍_ASM驱动开发疑难解决

    1 环境搭建 > 这里和  周壑老师不同:大家觉得哪中适合当前的物理机,就配置那种. 如下: win7 32 位: vs 2010; visualDDk 驱动项目插件: V A --- 代码高亮 ...

  3. 关于Windows10企业版的激活方法

    今天打开Excel在使用的时候,突然弹出弹窗,说我的激活即将过期什么的,让我转到设置进行激活. 第一个想到的办法就是更换产品密钥,在网上找了不少产品密钥,密钥有效,但是需要连接企业激活什么的,因为我是 ...

  4. [记录]学习树莓派3B接DHT11和LCD1602和修改树莓派时区

    前提 树莓派系统安装好 apache web 服务器,如未安装,可在树莓派内执行sudo apt-get install apache2 进行安装apache 也可以通过命令获取GPIO信息: gpi ...

  5. Linux时间和时区设定

    一.时区设定 由于安装系统时采用了UTC,那么什么是UTC呢,简单的说UTC就是0时区的时间,是国际标准,而中国处于UTC+8时区. 使用tzselect命令,过程如下: 可以看到此环境变量已设置,将 ...

  6. [JZOJ3293] 【SHTSC2013】阶乘字符串

    题目 题目大意 给你一个字符串,判断这个字符串是否为"阶乘字符串". 就是子序列包含字符集的全排列的字符串. n≤26n\leq 26n≤26 ∣S∣≤450|S|\leq 450 ...

  7. SpringCloud之Fegin学习笔记

    以下部分内容来源于网络摘抄~ 1.作用 Feign 是一种声明式.模板化的 HTTP 客户端.在 Spring Cloud 中使用 Feign,可以做到使用 HTTP 请求访问远程服务,就像调用本地方 ...

  8. Git从fork分支开始的过程整理

    文章适用于团队合作的时候多个人向一个repo贡献,整理了Git从fork分支开始的过程. 1. Fork 在github上你要贡献的repo(eg.http://github/remote/test. ...

  9. elasticsearch复合查询

    查询最近一小时内data.@level字段为Error的日志并按date倒序排列,输出最近10条,只输出[date,message]两个字段 GET events*/_search {     &qu ...

  10. NopCommerce3.9安装

    除非另外说明,否则本分类所有博文的NopCommerce都基于3.9版本. 用vs2015打开,其他版本的vs没试过. 首先打开解决方案,然后设置Nop.web为启动项目. 启动项目,项目即可自动编译 ...