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

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;}
http://www.xdnf.cn/news/14079.html

相关文章:

  • 工业化超声波清洗设备的五大关键特性
  • DeviceNet转PROFINET转换方案:基于S7-1500主站控制欧姆龙CJ2M从站设备
  • 2007-2020年各省国内专利申请授权量数据
  • UVM验证—第二课(一):核心基类阶段机制
  • Deepseek+python - 自动图表生成
  • Arduino学习-红外感应
  • 聊一聊 - 如何写好README文档
  • ABB 216EA61B HESG448230R1/G
  • OpenLayers 图层叠加控制
  • Windows10搭建FTP服务器
  • python中的zip函数
  • Python的格式化输入输出
  • 深入理解 @JsonGetter:精准掌控前端返回数据格式!
  • cpp 绑定方案大比拼
  • SpringBoot实现权限管理系统完整指南(附源码)
  • 【Code】COP FOR THE STRUCTURAL USE OF STEEL 2011 (2023 Edition)
  • SDPA(Scaled Dot-Product Attention)详解
  • CE 标志新门槛:智能门锁 EN 18031 认证合规路径与成本分析
  • 分布式锁模板工具类
  • 2025企业级BI产品评测和推荐
  • 在 WinForms 中制作无边框窗体通过鼠标拖动移动和调整大小,难点是我窗体上被标题栏和状态栏dock之后很难选中
  • 短视频矩阵系统开发实战:PHP实现SaaS独立部署
  • deepimagej-plugin开源程序是用于运行深度学习模型的 ImageJ 插件
  • 【解决方案】Kali 2022.3修复仓库密钥一键安装docker,docker compose
  • 开发环境与生产环境的 yml 文件与配置
  • 1分钟理解FreeRtos中的信号量知识
  • LeetCode - 387. 字符串中的第一个唯一字符
  • 一个简单的torch-cuda demo
  • Acrobat 首选项配置:从注册表到锁定机制
  • 【MPC】模型预测控制笔记 (2):约束MPC