当前位置: 首页 > news >正文

tp3.1临时连接指定数据库,切片分类in查询,带过滤需要的数据

最近写了一段比较不错的代码,记录一下,tp3.1临时连接指定数据库,切片分类in查询,带过滤需要的数据

/*** 获取季度报告总结* @author Bruce 2025/6/10*/public function getQuarterReportSummarize() {// 获取全部数据$allData = $this->getAllProtectedDomains();if ($allData['code'] != 1) {return $this->ajaxError($allData['message']);}// 分批处理大量数据,每批500个$batchSize = 500;$result = [];$totalDomains = count($allData['list']);for ($i = 0; $i < $totalDomains; $i += $batchSize) {$batch = array_slice($allData['list'], $i, $batchSize);$configs = D('WangZhanDomainHost')->getConfigs($batch);foreach ($configs as $key=>$config) {$messages = [];if (!$config['iswaf']) $messages[] = 'Web漏洞防护未开启';if (!$config['cc_switch']) $messages[] = 'CC防护未开启';if (!$config['cs_switch']) $messages[] = '爬虫防护未开启';if (!empty($messages)) {$result[$key] = implode(',', $messages) . ';';}}// 释放内存unset($batch, $configs);}return $this->ajaxSuccess($result);}
# WangZhanDomainHostModel.class.php
/*** 获取配置信息(优化版)*/public function getConfigs($data = []){if (empty($data)) return [];// 提取所有host和zone组合$hosts = [];$zones = [];$hostZoneMap = [];foreach ($data as $item) {if (empty($item['host']) || empty($item['zone'])) continue;$host = addslashes($item['host']);$zone = addslashes($item['zone']);$hosts[$host] = $host;$zones[$zone] = $zone;$hostZoneMap[$host][$zone] = true;}if (empty($hosts) || empty($zones)) return [];// 使用IN查询替代大量OR条件$allConfigs = $this->alias('dh')->join('LEFT JOIN anti_cc_config cc ON dh.host = cc.host AND dh.zone = cc.zone')->join('LEFT JOIN anti_cs_config cs ON dh.host = cs.host AND dh.zone = cs.zone')->where(['dh.host' => ['IN', array_unique($hosts)],'dh.zone' => ['IN', array_unique($zones)],])->field('dh.host, dh.zone, IFNULL(dh.iswaf, 0) as iswaf,IFNULL(cc.main_switch, 0) as cc_switch,IFNULL(cs.main_switch, 0) as cs_switch')->select();// 过滤出真正需要的记录$finalConfigs = [];foreach ($allConfigs as $config) {if (isset($hostZoneMap[$config['host']][$config['zone']])) {$finalConfigs[$config['host'].'.'.$config['zone']] = $config;}}return $finalConfigs;}

相关文章:

  • 工业自动化发展:工业相机在机器视觉领域的应用趋势
  • OpenLayers 图层控制
  • 14.安卓逆向2-frida hook技术-HookJava主动调用
  • 离线部署minio以及主从复制
  • ITIL 4考试介绍
  • atcoder [ABC271D] Flip and Adjust
  • js 查看字符串字节数
  • FreeSurfer的脑区表面重建与注意力nii图结合
  • Java面试题021:一文深入了解微服务之网关Zuul
  • 缓存击穿,缓存穿透,缓存雪崩的原因和解决方案
  • 传智健康---十天项目总结
  • 挑战杯三个项目
  • 09 - TripletAttention模块
  • RAG数据集综述
  • 第六章 进阶19 琦琦的追求
  • Windows 文件复制利器:ROBOCOPY 拷贝命令指南
  • 全球域名WHOIS信息查询免费API接口教程
  • Tlias-web 管理系统项目知识点复盘总结
  • 高性能Tick级别高频交易引擎设计与实现
  • 6月13日day52打卡
  • wordpress 图片集/seo诊断方法步骤
  • 强化政府网站建设管理/广州seo工资
  • 沙市网站建设/焊工培训班
  • 网站上如何放入地图/搜索网排名
  • 廊坊做网站的大公司/做seo推广公司
  • 怎么查询一个网站从哪做的/宁波seo基础入门