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相关文章
- 无需任何工具发送定时QQ消息
- Dapr 入门教程之消息队列
- Pulsar:下一代消息引擎真的这么强吗?
- 进程间通信方式——消息队列
- 为什么使用消息队列?我这样回答,面试官直说讲得很清楚
- WPF 实现带蒙版的 MessageBox 消息提示框
- 配置Spring Cloud Bus并集成消息代理示例
- SQLServer 错误 21879 无法查询重定向服务器“%s”以找到原始发布服务器“%s”和发布服务器数据库“%s”来确定远程服务器的名称;错误 %d,错误消息“%s”。 故障 处理 修复 支持远程
- 消息队列中间件详解架构师
- HTTP 状态消息
- Linux下消息队列个数如何设置(linux消息队列个数)
- Linux下的消息队列:高效数据传输的利器!(linux消息队列)
- MySQL实现消息队列的绝佳方案(mysql消息队列)
- Linux消息队列:实现强大的IPC通信(linuxmsgq)
- 分布式消息队列使用Redis优化分布式消息队列(redis消费)
- 腾讯回应微视裁员并停止投放:不实消息
- 如何使用Linux删除消息队列(linux删除消息队列)
- 队列MongoDB实现强健的消息队列系统(mongodb消息)
- 新一代消息队列像Redis一样简单高效(类似redis消息队列)
- Redis实现消息队列简便高效(消息队列用redis)
- 架设分布式消息队列构建Redis连接(分布式消息队列redis)
- 使用Redis实现消息队列(redis 队列实例)
- 一汽奥迪回应因芯片断供致多款主力车型停产:消息不属实