PHP脚本示例

server/2025/2/22 18:36:24/
php">/*** @desc 清理产品商品无效数据* @param Input $input* php think goods -m Clear -a clearGoods --endTime='2020-01-01' -vvv* @return void* @author 陈龙* @date 2024-04-02 9:45*/public function clearGoods(Input $input){$options = $input->getOptions();$start_time = microtime(true);$clearTime = strtotime($options['endTime'] ?? '') ?: strtotime(date('2020-01-01'));$where = ['completetime' => ['<', $clearTime],'retread_time' => ['<', $clearTime]];$data = Goods::where($where)->column('goods_spu');$this->output->writeln(Goods::getLastSql());$data = array_unique($data);$dataCount = count($data);$limit = 1000;$totalPage = ceil($dataCount / $limit);$this->output->writeln("总数据量:{$dataCount}");$this->output->writeln("每次查询:{$limit}");$this->output->writeln("总页数:{$totalPage}");if (empty($dataCount)) {$this->output->writeln('查无数据');return;}for ($pageNo = 1; $pageNo <= $totalPage; $pageNo++) {$this->output->info("第 {$pageNo} 页");$spus = array_slice($data, ($pageNo - 1) * $limit, $limit);$this->output->writeln('开始处理数据');$result = ClearService::instance()->dealClearGoods($spus);$message = $result['message'] ?? ($result['messages'] ?? '');$this->_showMsg($message);$this->output->info("第 {$pageNo} 页处理完成");}$this->output->writeln("执行时间:" . (microtime(true) - $start_time));}
php">    /*** @desc 消息提示抽离* @param array|string $message 消息内容* @return void* @author 陈龙* @date 2020/11/20 14:47:09*/private function _showMsg($message){if (is_array($message)) {foreach ($message as $key => $value) {$this->output->writeln("{$key}:" . (is_array($value) ? json_encode($value) : $value));}} else {$this->output->writeln($message);}}
php">    public function dealClearGoods($goods_spus){if (empty($goods_spus)) return back(0, "SPU为空");//1.根据spu查出所有sku,看近90天是否有库存,有销量$skus_arr = DevGoodsSku::where(['goods_spu' => ['IN', $goods_spus]])->column('goods_sku');//有库存的skus$stock_break_skus = $this->checkStockBySkus($skus_arr);//有销量的skus$sale_break_skus = $this->checkSalesBySkus($skus_arr);$all_break_skus = sep_unique_str(array_merge($stock_break_skus, $sale_break_skus));//获取需要剔除的spu$need_break_spus = DevGoodsSku::where(['goods_sku' => ['IN', $all_break_skus]])->group('goods_spu')->column('goods_spu');$this->output->writeln("需要剔除的spu总数:".count($need_break_spus));//去除后需要更新的skus$need_up_spus = array_diff($goods_spus, $need_break_spus);$this->output->writeln("需要更新的spu总数:".count($need_up_spus));//开始更新数据$this->updateIsClear($need_up_spus,1);return back(1, '执行完成');}

http://www.ppmy.cn/server/169906.html

相关文章

如何监控和优化 MySQL 中的慢 SQL

如何监控和优化 MySQL 中的慢 SQL 前言一、什么是慢 SQL&#xff1f;二、如何监控慢 SQL&#xff1f;1. 启用慢查询日志启用方法&#xff1a;日志内容&#xff1a; 2. 使用 mysqldumpslow 分析日志 三、如何分析慢 SQL&#xff1f;1. 使用 EXPLAIN 分析执行计划使用方法&#x…

国产编辑器EverEdit - 如何在EverEdit中创建工程?

1 创建工程 1.1 应用场景 工程是一个文件及文件夹的集合&#xff0c;对于稍微有点规模的项目&#xff0c;一般都会包含多个文件&#xff0c;甚至还会以文件夹的形式进行分层管理多个文件&#xff0c;为了方便的管理这个项目&#xff0c;可以将这些文件和文件夹保存为一个工程。…

Spring Boot 项目开发流程全解析

目录 引言 一、开发环境准备 二、创建项目 三、项目结构 四、开发业务逻辑 1.创建实体类&#xff1a; 2.创建数据访问层&#xff08;DAO&#xff09;&#xff1a; 3.创建服务层&#xff08;Service&#xff09;&#xff1a; 4.创建控制器层&#xff08;Controller&…

Java每日精进·45天挑战·Day20

第二部分&#xff1a;链表旋转 在数据结构中&#xff0c;链表是一种非常基础且重要的数据结构。它允许我们在不需要大量数据移动的情况下&#xff0c;在任意位置插入或删除元素。今天&#xff0c;我们将探讨一个链表相关的有趣问题&#xff1a;如何将链表向右旋转 k 个位置&am…

深入解析 Hydra 库:灵活强大的 Python 配置管理框架

深入解析 Hydra 库&#xff1a;灵活强大的 Python 配置管理框架 在机器学习、深度学习和复杂软件开发项目中&#xff0c;管理和维护大量的配置参数是一项具有挑战性的任务。传统的 argparse、json 或 yaml 方式虽然能管理部分配置&#xff0c;但随着项目规模的增长&#xff0c…

什么是逻辑分析仪?

逻辑分析仪电子工程师的“显微镜” 一、什么是逻辑分析仪&#xff1f; 逻辑分析仪是一种用于测量和分析数字电路信号的电子测试设备。它主要用于观察和记录数字信号的时序关系、逻辑状态以及数据传输情况。与示波器不同&#xff0c;示波器主要用于测量模拟信号的电压和时间特性…

解锁外观模式:Java 编程中的优雅架构之道

系列文章目录 文章目录 一、引言二、外观模式基础&#xff08;一&#xff09;外观模式的定义&#xff08;二&#xff09;外观模式的结构&#xff08;三&#xff09;外观模式的作用 三、外观模式在 Java 中的实现&#xff08;一&#xff09;简单示例&#xff1a;智能家电控制&am…

量子计算的基本运算:Hadamard 门、CNOT 门、Pauli 门详解

量子计算是现代计算科学的前沿领域,它与经典计算机在处理信息的方式上有着本质的区别。量子计算机利用量子比特(qubit)的叠加态和量子纠缠等特性来进行计算,从而在某些特定任务上超越传统计算机。量子计算的核心运算单元是量子门,它们通过作用于量子比特来操控量子状态。本…