<?php class Task_card{ /** * @var int */ public $httpCode = 0; /** * @var string */ public $error_status = ""; /** * @author xiaohuihui <xzh_tx@163.com> * @param array $HttpData * @param array $bodyData * @param string $parseType * @return mixed */ public function curl($HttpData=array(), $bodyData=array() ,$parseType = ""){ $HttpData=array_merge(array( 'url'=>"", 'method'=>"GET", 'connectTimeOut'=>10, 'CURLOPT_RETURNTRANSFER'=>1, 'httpheader'=>[], ),$HttpData); $curlary = array( CURLOPT_RETURNTRANSFER=>$HttpData['CURLOPT_RETURNTRANSFER'], CURLOPT_CONNECTTIMEOUT=>10, CURLOPT_URL=>$HttpData['url'], CURLOPT_HTTPHEADER=>$HttpData['httpheader'], ); /* {{{ 方法参数解析 */ if($HttpData['method'] === "POST"){ $curlary[CURLOPT_POST] = 1; if($parseType == 'from'){ $curlary[CURLOPT_POSTFIELDS] = http_build_query($bodyData); } elseif ($parseType == 'json'){ $curlary[CURLOPT_POSTFIELDS] = json_encode($bodyData); } else { $curlary[CURLOPT_POSTFIELDS] = $bodyData; } }elseif ($HttpData['method'] == "GET"){ $url = $HttpData['url'].(empty($bodyData) ? "" : "?".http_build_query($bodyData)); $curlary[CURLOPT_URL]=$url; } /* }}} */ /* {{{ 开始执行curl */ $curl = curl_init(); curl_setopt_array($curl, $curlary); $response = curl_exec($curl); $this->error_status = curl_error($curl); $this->httpCode = curl_getinfo($curl,CURLINFO_HTTP_CODE); curl_close($curl); /* }}} */ return $response; } public function PageExpireCard(){ $redis_config = SConfig::getConfig(ROOT_CONFIG."/redis.ini","default"); $client = new \swoole_redis; $client->on('message', function (\swoole_redis $client, $result) { /** Array ( [0] => pmessage [1] => __keyevent@0__:expired [2] => __keyevent@0__:expired [3] => card:expire:remark:3:8 ) */ $common_config = SConfig::getConfig(ROOT_CONFIG."/common.conf","TASK"); if(!empty($result[3]) && stripos($result[3],$common_config->match_key) !==false){ //echo $result[3];//card:expire:remark:3:8 preg_match('/'.$common_config->match_key.'(\d+):(\d+)/',$result[3],$ret); $uid = !empty($ret[1]) ? $ret[1]:0; $fid = !empty($ret[2]) ? $ret[2]:0; if($uid > 0 && $fid > 0){ $bodyData = [ 'uid'=>$uid, 'fid'=>$fid, 'authkey'=>$common_config->authkey, ]; $HttpData = [ 'url' =>$common_config->callback_url, 'method'=>"GET", 'httpheader'=>0, ]; $ret = $this->curl($HttpData,$bodyData); $this->debug($ret); } } }); //核心代码。。。。。。。 $client->connect($redis_config->host, $redis_config->port, function (\swoole_redis $client, $result) { $redis_config = SConfig::getConfig(ROOT_CONFIG."/redis.ini","default"); if(isset($redis_config->pwd) && $redis_config->pwd!=""){ $client->auth($redis_config->pwd, function($redis, $result) { $redis->psubscribe('__keyevent@0__:expired'); }); }else{ $client->psubscribe('__keyevent@0__:expired'); } $common_config = SConfig::getConfig(ROOT_CONFIG."/common.conf","TASK"); $debug = [ 'redis_host'=>$redis_config->host, 'redis_port'=>$redis_config->port, 'redis_pwd'=>isset($redis_config->pwd) ? $redis_config->pwd : '', 'connect'=>"ok", 'callbackUrl'=>$common_config->callback_url, 'authkey'=>$common_config->authkey, ]; $this->debug($debug); }); } public function debug($data=[]){ print_r($data); } }
原文链接:swoole异步redis使用密码认证登陆的php代码,转载请注明来源!