放入消息

/**
* 获取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. 布局页中的特殊情况(比如说只有某页有的banner)

    仅作代码记录之用 /WEB-INF/tags/section.tag <%@ tag language="java" import="java.util.*,jav ...

  2. SpringCloud搭建分布式配置中心(基于git)

    1.简介 Spring Cloud Config.它用来为分布式系统中的基础设施和微服务提供集中化的外部配置支持,分为服务端和客户端两个部分. 其中服务端也称为分布式配置中心,他是独立的微服务应用,用 ...

  3. HZOI20190725 B 回家 tarjan

    题目大意:https://www.cnblogs.com/Juve/articles/11226266.html 题解: 感觉挺水的,但考场上没打出来 题目翻译一下就是输出起点到终点必经的点 其实就是 ...

  4. pandas的使用方法

    一.基本使用方法 # pandas引入约定 import pandas as pd from pandas import Series,DataFrame import numpy as np imp ...

  5. Joomla - 菜单系统 (从创建到前端页面显示的过程)

    在 Joomla 中,菜单是最常用且重要的功能之一,一般用于承载页面内容和各内容间的切换.导航等,演绎着非常重要的角色: 一.新建菜单 进入后台,点击顶栏菜单 -> 菜单管理 -> 点击新 ...

  6. ssh 与服务器保持连接

    直接改客户端,服务器端不应该更改. sudo vi /etc/ssh/ssh_config # 或 ~/.ssh/config TCPKeepAlive=yes # Client每隔 60 秒发送一次 ...

  7. SpringCloud学习笔记(一):SpringCloudt相关面试题

    什么是微服务? 看笔记二 微服务之间是如何独立通讯的? 服务与服务间采⽤轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API) SpringCloud和Dubbo有什么区别? Du ...

  8. Asp.net Core Jenkins Docker 实现一键化部署

    写在前面 在前段时间尝试过用Jenkins来进行asp.net core 程序在IIS上面的自动部署.大概的流程是Jenkins从git上获取代码 最开始Jenkins是放在Ubuntu的Docker ...

  9. Ubuntu下U盘能看见盘符但打不开

    查看U盘状态 sudo fdisk -l 格式化 sudo mkfs -t vfat -I /dev/sdb1 sudo mkfs -t ntfs -I /dev/sdb1 sudo mkfs -t ...

  10. SprigBoot中的 WebMvcConfigurer与 WebMvcConfigurerAdapter和 WebMvcConfigurationSupport

    WebMvcConfigurationAdapter 过时? 在SpringBoot2.0之后的版本中WebMvcConfigurerAdapter过时了,所以我们一般采用的是如下的两种的解决的方法. ...