php 操作Redis发送短信
循环查询redis队列里面的数据
然后提交数据后将反馈信息再写入另一个 redis list里面
代码
<?php /**
* System Name: sent message
* User: gyc
* Date: 2017/11/30 14:40
*/
class Sentmsg
{
function sentaction($data_in = null)
{
$data_in=unserialize($data_in);
if(empty($data_in['id'])||empty($data_in['phone'])||empty($data_in['content']))
{
return array('state'=>false,'message'=>json_encode($data_in));exit;
}
$URL = "http://xxxxx/sms.aspx";//运营商接口地址
$data =
[
'account' => '账号',
'pwd' => '密码',
'userid' => 'xxx',
'mobile' => $data_in['phone'],
'content' => $data_in['content'],
'sendTime' => null,
'action' => 'send',
'extno' => null,
];//要发送的数据
$ch = curl_init();
//判断ssl连接方式
if (stripos($URL, 'https://') !== false) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 1);
}
$connttime = 500; //连接等待时间500毫秒
$timeout = 15000;//超时时间15秒 $querystring = "";
if (is_array($data)) {
// Change data in to postable data
foreach ($data as $key => $val) {
if (is_array($val)) {
foreach ($val as $val2) {
$querystring .= urlencode($key) . '=' . urlencode($val2) . '&';
}
} else {
$querystring .= urlencode($key) . '=' . urlencode($val) . '&';
}
}
$querystring = substr($querystring, 0, -1); // Eliminate unnecessary &
} else {
$querystring = $data;
}
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//反馈信息
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); //http 1.1版本
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, $connttime);//连接等待时间
curl_setopt($ch, CURLOPT_TIMEOUT_MS, $timeout);//超时时间
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $querystring);
$file_contents = curl_exec($ch);//获得返回值
$status = curl_getinfo($ch);
curl_close($ch); $call_back_json = json_encode(simplexml_load_string($file_contents, 'SimpleXMLElement', LIBXML_NOCDATA));
$reslut = json_decode($call_back_json, true);
$ststus = $reslut['returnstatus']; if ($ststus == 'Success') {
return array('state'=>true);
} else {
return array('state'=>false,'message'=>json_encode($reslut));
} }
} set_time_limit(0);
header("Content-type: text/html; charset=utf-8");
$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379) or die('errot');
$sms = new Sentmsg();
while (true) {
$data = $redis->LPOP('Queue');
if (!empty($data)) { $res = $sms->sentaction($data);
if($res['state'])
{
$data= unserialize($data);
$redis->LPUSH('Queue2', serialize(array('id'=>$data['id'],'status'=>'success','time'=>time()))); }else
{
$data= unserialize($data);
$redis->LPUSH('Queue2', serialize(array('id'=>$data['id'],'status'=>'fail','time'=>time(),'msg'=>$res['message'])));
}
}
sleep(rand() % 3);
}
php 操作Redis发送短信的更多相关文章
- android使用Intent操作拨打号码发送短信
Activity程序Activity.java package com.example.intentcaseproject; import android.net.Uri; import androi ...
- Android 读取手机联系人、拨号、发送短信及长按菜单的操作
本示例实现了读取手机联系人,拨号.发送短信及长按出现菜单选项的操作↓ 1.Andrid项目结构图↓主要操作图中红色方框内的文件. 2.首先布局代码如下↓ a, main.xml 程序运行的主界面,主要 ...
- [Xcode 实际操作]八、网络与多线程-(4)使用UIApplication对象发送短信
目录:[Swift]Xcode实际操作 本文将演示如何使用应用程序单例对象,发送短信的功能. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 注:需要使用真机进行测 ...
- 注册登录页面修订-Python使用redis-手机验证接口-发送短信验证
登录页面修订 views.Login.vue <template> <div class="login box"> <img src="@/ ...
- day101:MoFang:模型构造器ModelSchema&注册功能之手机号唯一验证/保存用户注册信息/发送短信验证码
目录 1.模型构造器:ModelSchema 1.SQLAlchemySchema 2.SQLAlchemyAutoSchema 2.注册功能基本实现 1.关于手机号码的唯一性验证 2.保存用户注册信 ...
- ios调用本地拨打电话,发送短信
电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话 [[UIApplication sharedApplicat ...
- android: 接收和发送短信
8.2 接收和发送短信 收发短信应该是每个手机最基本的功能之一了,即使是许多年前的老手机也都会具备这 项功能,而 Android 作为出色的智能手机操作系统,自然也少不了在这方面的支持.每个 A ...
- android 入门 002 (拨打电话,发送短信)
一.拨打电话 1.首先做好界面,代码如下: layout =>activity_main.xml 中 <LinearLayout xmlns:android="http://sc ...
- java中用中国网建提供的SMS短信平台发送短信
接下来的项目需求中提到需要短信发送功能,以前没有做过,因此便在网上搜了一下.大体上说的都是有三种方法,分别是sina提供的webservice接口.短信mao和中国网建提供的SMS短信平台. 这三种方 ...
随机推荐
- sqljob
http://blog.csdn.net/sinat_16998945/article/details/52586687
- vertical-greenplum
https://github.com/sumitchawla/docker-vertica You can either pull the image from Docker Registry usi ...
- 建立PHP的本地调试环境PHP基础教程
对于windows平台而言,PHP供给了一个安装程序,但是这个安装程序是不能直接运行来建立个人服务器平台的,而是必需嵌进现有的服务器平台,如:Windows NT下的IIS或Windows下的PWS, ...
- Java面试题系列(七)锁的原理
redis实现分布式锁 synchronized 和 reentrantlock的区别,偏向锁/轻量级锁/重量级锁的原理,能否从偏向锁直接升级成重量级锁
- BZOJ 4881: [Lydsy1705月赛]线段游戏 动态规划 + 线段树
Description quailty和tangjz正在玩一个关于线段的游戏.在平面上有n条线段,编号依次为1到n.其中第i条线段的两端点坐 标分别为(0,i)和(1,p_i),其中p_1,p_2,. ...
- cvpr 2019 workshop&oral session
1. Verification and Certification of Neural Networks神经网络的验证与认证 2. Automated Analysis of Marine Video ...
- prometheus-pushgateway安装
背景 当prometheus的server与target不在同一网段网络不通,无法直接拉取target数据,需要使用pushgateway作为数据中转点. 弊端 将多个节点数据汇总到 pushgate ...
- Kylin CDH安装
Kylin安装 从官网下载 apache-kylin-2.0.0-bin-cdh57.tar.gz 放到每台需要安装kylin 服务的机器 [hadoop@hadoop3 cdh5.12.0]$ su ...
- 微信小程序的 音频 组件
audio:音频组件, api 接口为 wx.createInnerAudioContext audio 组件的属性: id:类型 字符串 audio 组件的唯一标识 src:类型 字符串 要播放音频 ...
- sklearn—LinearRegression,Ridge,RidgeCV,Lasso线性回归模型简单使用
线性回归 import sklearnfrom sklearn.linear_model import LinearRegression X= [[0, 0], [1, 2], [2, 4]] y = ...