php 操作Redis发送短信
Posted 风吹墨里香
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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发送短信的主要内容,如果未能解决你的问题,请参考以下文章