1. 程式人生 > >php 操作Redis發送短信

php 操作Redis發送短信

contents push chan message ring span pconnect new tms

循環查詢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發送短信