zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

phpredis实现简单的消息队列详解编程语言

消息队列队列编程语言 实现 详解 简单 phpredis
2023-06-13 09:11:50 时间

phpredis实现简单的消息队列

本来想用kafka 试用了下 感觉坑巨多 而且项目也不需要那么大的吞吐量所以放弃这个方案了

 ?php 

require_once __DIR__ . /phprediscaozuo.php; 

$redis = /RedisClient::getInstance(); 

$ss = $redis- subscribe(array(xiaoxiduilie), callback); 

function callback($instance, $channelName, $message) 

 $info = unserialize($message); 

 $url = $info[url]; 

 if (is_numeric(strpos(__FILE__, phpStudy))) { 

 $yuming = bendilink; 

 } else { 

 $yuming = fuwuqilink; 

 $url=$yuming.$url; 

 $postdata = $info[postdata]; 

 echo $channelName, "== ", $message, PHP_EOL; 

 $info = httprepair($url, $postdata, post); 

 file_put_contents(__DIR__ . /xiaoxiduilie.log, date("Y-m-d H:i:s") . " " . var_export($info, true) . PHP_EOL, FILE_APPEND | LOCK_EX); 

 * 发送HTTP请求方法,目前只支持CURL发送请求 

 * @param string $url 请求URL 

 * @param array $data POST的数据,GET请求时该参数无效 

 * @param string $method 请求方法GET/POST 

 * @return array 响应数据 

function httprepair($url, $data = , $method = GET) 

 $opts = array( 

 CURLOPT_TIMEOUT = 1000, 

 CURLOPT_RETURNTRANSFER = 1, 

 CURLOPT_SSL_VERIFYPEER = false, 

 CURLOPT_SSL_VERIFYHOST = false, 

 /* 根据请求类型设置特定参数 */ 

 $opts[CURLOPT_URL] = $url; 

 if (strtoupper($method) == POST) { 

 $opts[CURLOPT_POST] = 1; 

 $opts[CURLOPT_POSTFIELDS] = $data; 

 if (is_string($data)) { 

 //发送JSON数据 

 $opts[CURLOPT_HTTPHEADER] = array( 

 Content-Type: application/json; charset=utf-8, 

 Content-Length:  . strlen($data), 

 /* 初始化并执行curl请求 */ 

 $ch = curl_init(); 

 curl_setopt_array($ch, $opts); 

 $data = curl_exec($ch); 

 $error = curl_error($ch); 

 curl_close($ch); 

 //发生错误,抛出异常 

 if ($error) { 

 file_put_contents(__DIR__ . /error.log, date("Y-m-d H:i:s") . " " . var_export(  . json_encode($error), ERROR, true) . PHP_EOL, FILE_APPEND | LOCK_EX); 

 return $data; 

}

直接PHP 运行 常驻内存就可以了 php xx.php   运行在后台了  这个几千的并发没什么问题的

 ps:一定要先subcribe 监听 频道 然后再publish 频道 不然会publish失败

我用url 请求 是为了以后更好的业务隔离

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/19003.html

cjavaphp