当前位置:首页>python>用Python轻松搞定物流报价:一键选出最优渠道,省时又省钱!

用Python轻松搞定物流报价:一键选出最优渠道,省时又省钱!

  • 2026-03-28 21:00:28
用Python轻松搞定物流报价:一键选出最优渠道,省时又省钱!

还在手动比对各家物流报价?写个Python脚本,让电脑帮你做选择题!

在电商、外贸、跨境业务中,物流成本往往是不可忽视的一环。不同渠道、不同重量区间,价格千差万别。面对动辄几十行的报价表,人工比对不仅费时,还容易出错。今天,我们就用Python写一个物流报价优化器,只需输入重量,就能自动匹配所有报价,并选出价格最低的渠道。

痛点场景

有一份Excel报价表,包含三列:

  • 渠道:物流商名称(如“快递2”“快递1”“快递3”),这是快递公司。
  • 重量表达式:重量区间,如0<W≤0.50.5<W≤1W>10
  • 收费:对应的价格

我们想要:

  1. 给定一个物品重量,找到所有符合该重量的报价;
  2. 从中挑出价格最低的渠道;
  3. 支持批量计算多个重量,并导出结果。

人工做这件事,需要逐个判断重量落在哪个区间,再比较价格。如果报价规则复杂(比如区间重叠、表达式多种多样),手动处理简直是灾难。

下面我们就用Python来彻底解决这个问题。

核心思路

整个优化器的核心逻辑分为三步:

  1. 解析重量表达式:将类似0<W≤0.5的文本转换成Python能计算的表达式(例如0 < weight <= 0.5)。
  2. 评估匹配:对每个报价,把重量代入表达式,判断是否为真。
  3. 筛选最优:在所有匹配项中,找出收费最低的渠道。

为了便于复用,我们把所有功能封装成一个类LogisticsPriceOptimizer,并提供简单的接口。

代码实现

代码包含以下几个主要部分:

1. 初始化与数据加载

classLogisticsPriceOptimizer:def__init__(self, data_file="物流报价数据.xlsx"):        self.price_table = None        self.actual_weight = None        self.data_file = data_filedefload_price_data(self):# 读取Excel,检查必要列        self.price_table = pd.read_excel(self.data_file)# ... 数据验证和预览

使用pandas读取Excel,并验证是否包含“渠道”“重量表达式”“收费”三列。

2. 预处理表达式

defpreprocess_expressions(self, weight):deftransform_expression(expr):# 替换中文符号        expr = expr.replace("<""<").replace("≤""<=")# 将W替换为实际重量        expr = expr.replace("W", str(weight))return expr    df['python_expression'] = df['重量表达式'].apply(transform_expression)

这一步把文本表达式变成可执行的Python表达式,如0<W≤0.5 → 0 < 0.4 <= 0.5

3. 评估表达式

defevaluate_expressions(self, df):defsafe_eval(expr):try:return eval(expr)except:returnFalse    df['matches'] = df['python_expression'].apply(safe_eval)    matched = df[df['matches'] == True]return matched

eval计算每个表达式的真假,筛选出匹配的行。

4. 找出最优方案

deffind_optimal_plan(self, matched_df):    matched_df = matched_df.sort_values('收费', ascending=True)    min_price = matched_df['收费'].min()    optimal = matched_df[matched_df['收费'] == min_price]return optimal

按价格排序,取最低价对应的所有渠道(可能有多个价格相同)。

5. 整合流程

defcalculate_for_weight(self, weight):    self.load_price_data()               # 加载数据    processed = self.preprocess_expressions(weight)   # 预处理    matched = self.evaluate_expressions(processed)    # 匹配    optimal = self.find_optimal_plan(matched)         # 最优return optimal

6. 批量计算

defbatch_calculate(self, weights, save_results=True):    results = []for weight in weights:# ... 计算每个重量,收集结果    results_df = pd.DataFrame(results)if save_results:        results_df.to_csv("批量计算结果.csv", encoding='utf-8-sig')return results_df

支持批量计算并自动保存为CSV文件。

实际演示

假设我们有一份Excel数据:

渠道
重量表达式
收费
快递1
0<W≤0.5
5.0
快递1
0.5<W≤1
7.0
快递2
0<W≤0.3
8.0
快递2
0.3<W≤0.8
9.0
快递4
W≤1
6.0

运行代码,输入重量0.4KG:

开始计算物流最优方案 (重量=0.4KG)============================================================正在评估 5 个表达式...匹配表达式数: 3匹配的表达式详情:  渠道   重量表达式    python_expression  收费 快递1   0<W≤0.5        0 < 0.4 <= 0.5      5.0 快递2   0.3<W≤0.8      0.3 < 0.4 <= 0.8    9.0 快递4    W≤1            0.4 <= 1            6.0最优物流方案 (重量=0.4KG):==========================================================最低价格: ¥5.0匹配渠道总数: 3最优渠道数量: 1最优渠道详情:  • 快递1    重量区间: 0<W≤0.5    价格: ¥5.0

程序自动帮我们找到了最便宜的快递1,价格5元。

批量计算也毫无压力:

optimizer.batch_calculate([0.20.61.2])

输出汇总表格并保存为CSV。


附录:完整代码

import pandas as pdimport osclassLogisticsPriceOptimizer:"""    物流报价优化器类    用于根据重量和物流报价数据,计算最优的物流渠道方案    """def__init__(self, data_file="物流报价数据.xlsx"):"""        初始化物流报价优化器        Parameters:        -----------        data_file : str, optional            物流报价数据文件路径,默认读取"物流报价数据.xlsx"        """        self.price_table = None# 存储原始报价数据        self.actual_weight = None# 当前正在计算的重量        self.data_file = data_file   # 数据文件路径defload_price_data(self):"""        直接从指定的Excel文件加载物流报价数据        Returns:        --------        pandas.DataFrame: 加载的数据,如果失败则返回None        """        file_path = self.data_fileifnot os.path.exists(file_path):            print(f"错误:未找到文件 '{file_path}'")            print("请确保 '物流报价数据.xlsx' 文件在当前目录中")returnNonetry:# 读取Excel文件            self.price_table = pd.read_excel(file_path)            print(f"成功从Excel文件加载数据: {file_path}")# 检查必需的列是否存在            required_columns = ['渠道''重量表达式''收费']            missing_columns = [col for col in required_columns if col notin self.price_table.columns]if missing_columns:                print(f"数据缺少必需的列: {missing_columns}")                print(f"当前数据列: {list(self.price_table.columns)}")                print("请确保Excel文件包含以下列:")                print("1. '渠道' - 物流渠道名称")                print("2. '重量表达式' - 重量区间表达式,如 '0<W≤0.1'")                print("3. '收费' - 价格")returnNone            print(f"\n数据加载成功:")            print(f"文件: {file_path}")            print(f"数据形状: {self.price_table.shape} (行数: {len(self.price_table)}, 列数: {len(self.price_table.columns)})")            print(f"数据列: {list(self.price_table.columns)}")# 显示数据预览            print(f"\n数据预览 (前5行):")            print(self.price_table.head().to_string(index=False))# 显示渠道信息            print(f"\n物流渠道汇总:")            channels = self.price_table['渠道'].unique()for i, channel in enumerate(channels, 1):                count = len(self.price_table[self.price_table['渠道'] == channel])                print(f"  {i}{channel} ({count}个报价)")return self.price_tableexcept Exception as e:            print(f"加载文件时发生错误: {str(e)}")returnNonedefpreprocess_expressions(self, weight):"""        预处理重量表达式        将文本表达式转换为Python可执行的表达式        Parameters:        -----------        weight : float            物品实际重量        Returns:        --------        pandas.DataFrame: 处理后的数据,包含新列'python_expression'        """if self.price_table isNone:            print("请先加载数据!")returnNone        self.actual_weight = weight# 复制数据,避免修改原始数据        df = self.price_table.copy()deftransform_expression(expr):"""转换单个表达式:替换符号,并将W替换为实际重量"""ifnot isinstance(expr, str):                expr = str(expr)# 替换中文符号为Python符号            expr = expr.replace("<""<").replace("≤""<=")# 将表达式中的W替换为实际重量            expr = expr.replace("W", str(weight))return expr# 应用转换函数到每一行        df['python_expression'] = df['重量表达式'].apply(transform_expression)        print(f"\n表达式预处理完成 (重量={weight}KG):")        print(f"已处理 {len(df)} 个重量表达式")return dfdefevaluate_expressions(self, df):"""        评估表达式,返回匹配的行        Parameters:        -----------        df : pandas.DataFrame            包含预处理表达式的数据        Returns:        --------        pandas.DataFrame: 匹配的数据行        """if df isNoneor len(df) == 0:            print("没有可评估的数据")returnNonedefsafe_eval(expr):"""安全地评估表达式"""try:# 使用eval计算表达式return eval(expr)except Exception as e:                print(f"表达式评估错误: {expr} -> {str(e)}")returnFalse# 评估所有表达式        print(f"\n正在评估 {len(df)} 个表达式...")        df['matches'] = df['python_expression'].apply(safe_eval)# 筛选出匹配的行        matched = df[df['matches'] == True].copy()        print(f"\n表达式评估结果:")        print(f"总表达式数: {len(df)}")        print(f"匹配表达式数: {len(matched)}")        print(f"匹配率: {len(matched)/len(df)*100:.1f}%")if len(matched) > 0:            print(f"\n匹配的表达式详情:")            display_df = matched[['渠道''重量表达式''python_expression''收费']]            print(display_df.to_string(index=False))else:            print(f"\n没有匹配的表达式")return matcheddeffind_optimal_plan(self, matched_df):"""        从匹配的行中找到最优方案(价格最低)        Parameters:        -----------        matched_df : pandas.DataFrame            匹配的数据行        Returns:        --------        pandas.DataFrame: 最优方案数据(可能多个渠道价格相同)        """if matched_df isNoneor len(matched_df) == 0:            print(f"\n没有找到匹配重量 {self.actual_weight}KG 的物流渠道!")returnNone# 按价格升序排序        matched_df = matched_df.sort_values('收费', ascending=True)# 获取最优方案(最低价格)        min_price = matched_df['收费'].min()        all_optimal = matched_df[matched_df['收费'] == min_price]        print(f"\n最优物流方案 (重量={self.actual_weight}KG):")        print("="*50)        print(f"最低价格: ¥{min_price}")        print(f"匹配渠道总数: {len(matched_df)}")        print(f"最优渠道数量: {len(all_optimal)}")        print(f"\n最优渠道详情:")for idx, row in all_optimal.iterrows():            print(f"  • {row['渠道']}")            print(f"    重量区间: {row['重量表达式']}")            print(f"    价格: ¥{row['收费']}")            print()if len(all_optimal) < len(matched_df):            print(f"\n其他匹配渠道 (价格较高):")            other_channels = matched_df[matched_df['收费'] > min_price]for idx, row in other_channels.iterrows():                print(f"  • {row['渠道']} - ¥{row['收费']} ({row['重量表达式']})")return all_optimaldefcalculate_for_weight(self, weight):"""        完整计算流程:加载数据 -> 计算指定重量的最优方案        Parameters:        -----------        weight : float            物品实际重量        Returns:        --------        tuple: (最优方案数据框, 处理后的完整数据框)        """        print("="*60)        print(f"开始计算物流最优方案 (重量={weight}KG)")        print("="*60)# 1. 加载数据(如果尚未加载)if self.price_table isNone:            self.load_price_data()if self.price_table isNone:returnNoneNone# 2. 预处理表达式        processed_df = self.preprocess_expressions(weight)if processed_df isNone:returnNoneNone# 3. 评估表达式,得到匹配的行        matched_df = self.evaluate_expressions(processed_df)# 4. 找到最优方案        optimal_plan = self.find_optimal_plan(matched_df)return optimal_plan, processed_dfdefbatch_calculate(self, weights, save_results=True, output_file="批量计算结果.csv"):"""        批量计算多个重量的最优方案        Parameters:        -----------        weights : list            重量列表        save_results : bool            是否保存结果到文件        output_file : str            结果保存文件名        Returns:        --------        pandas.DataFrame: 批量计算结果        """        print("="*60)        print(f"批量计算物流最优方案 ({len(weights)} 个重量)")        print("="*60)# 1. 加载数据(如果尚未加载)if self.price_table isNone:            self.load_price_data()if self.price_table isNone:returnNone        results = []for i, weight in enumerate(weights, 1):            print(f"\n[{i}/{len(weights)}] >>> 计算重量: {weight}KG <<<")# 预处理表达式            processed_df = self.preprocess_expressions(weight)if processed_df isNone:continue# 评估表达式            matched_df = self.evaluate_expressions(processed_df)if matched_df isnotNoneand len(matched_df) > 0:                matched_df = matched_df.sort_values('收费', ascending=True)                best_channel = matched_df.iloc[0]['渠道']                best_price = matched_df.iloc[0]['收费']                matched_count = len(matched_df)                expression = matched_df.iloc[0]['重量表达式']else:                best_channel = "无匹配"                best_price = None                matched_count = 0                expression = "无"            results.append({'重量(KG)': weight,'最优渠道': best_channel,'价格(元)': best_price,'匹配渠道数': matched_count,'重量表达式': expression            })# 创建结果数据框        results_df = pd.DataFrame(results)        print("\n" + "="*60)        print("批量计算结果汇总")        print("="*60)        print(results_df.to_string(index=False))# 保存结果if save_results and len(results_df) > 0:if output_file.endswith('.csv'):                results_df.to_csv(output_file, index=False, encoding='utf-8-sig')                print(f"\n结果已保存为CSV文件: {output_file}")elif output_file.endswith('.xlsx'):                results_df.to_excel(output_file, index=False)                print(f"\n结果已保存为Excel文件: {output_file}")else:                output_file = f"{output_file}.csv"                results_df.to_csv(output_file, index=False, encoding='utf-8-sig')                print(f"\n结果已保存为CSV文件: {output_file}")return results_df# 主程序示例defmain():"""主程序:直接读取物流报价数据.xlsx"""    print("物流报价最优方案计算器 - 直接读取Excel版")    print("="*60)# 1. 创建优化器实例,默认读取"物流报价数据.xlsx"    optimizer = LogisticsPriceOptimizer("物流报价数据.xlsx")# 2. 从文件加载数据    print(f"\n正在加载文件: 物流报价数据.xlsx")    optimizer.load_price_data()if optimizer.price_table isNone:        print("\n无法加载数据,程序退出")return    print("\n" + "="*60)    print("开始计算最优物流方案")    print("="*60)# 3. 示例1:计算单个重量    print("\n示例1: 计算单个重量 (0.4KG)")    example_weight = 0.4    optimal_plan, processed_df = optimizer.calculate_for_weight(example_weight)# 4. 示例2:批量计算    print("\n" + "="*60)    print("示例2: 批量计算多个重量")    test_weights = [0.050.150.30.40.51.02.55.010.0]    batch_results = optimizer.batch_calculate(        test_weights,        save_results=True,        output_file="物流报价批量计算结果.csv"    )# 5. 用户交互示例    print("\n" + "="*60)    print("示例3: 自定义重量计算")    print("="*60)# 让用户输入重量whileTrue:try:            user_input = input("\n请输入物品重量(KG) (输入'q'退出, 输入'p'打印数据): ").strip()if user_input.lower() == 'q':                print("感谢使用,再见!")breakelif user_input.lower() == 'p':                print("\n当前数据预览:")                print(optimizer.price_table.to_string(index=False))continue            weight = float(user_input)if weight < 0:                print("重量不能为负数!")continue# 计算            optimal_plan, _ = optimizer.calculate_for_weight(weight)if optimal_plan isnotNoneand len(optimal_plan) > 0:                print(f"\n计算完成!重量 {weight}KG 的最优方案:")for idx, row in optimal_plan.iterrows():                    print(f"  • {row['渠道']} - ¥{row['收费']} ({row['重量表达式']})")else:                print(f"未找到重量 {weight}KG 的物流方案")except ValueError:            print("请输入有效的数字!")except Exception as e:            print(f"计算错误: {str(e)}")    print("\n" + "="*60)    print("生成的文件:")    print("="*60)if os.path.exists("物流报价批量计算结果.csv"):        size_kb = os.path.getsize("物流报价批量计算结果.csv") / 1024        print(f"  • 物流报价批量计算结果.csv ({size_kb:.1f} KB)")    print("\n使用说明:")    print("1. 确保 '物流报价数据.xlsx' 文件在当前目录")    print("2. 文件需要包含三列: '渠道', '重量表达式', '收费'")    print("3. 运行程序会自动加载并计算")    print("4. 可以自定义输入重量进行计算")    print("5. 批量计算的结果保存在 '物流报价批量计算结果.csv'")    print("="*60)# 快速使用函数defquick_calculate(weight):"""    快速计算函数    Parameters:    -----------    weight : float        物品重量    Returns:    --------    pandas.DataFrame: 最优方案    """    optimizer = LogisticsPriceOptimizer("物流报价数据.xlsx")    optimal_plan, _ = optimizer.calculate_for_weight(weight)return optimal_plandefbatch_calculate_weights(weights_list):"""    批量计算函数    Parameters:    -----------    weights_list : list        重量列表    Returns:    --------    pandas.DataFrame: 批量计算结果    """    optimizer = LogisticsPriceOptimizer("物流报价数据.xlsx")    results = optimizer.batch_calculate(weights_list, save_results=True)return results# 简单测试函数deftest_simple():"""最简单的测试函数"""    print("简单测试 - 读取物流报价数据.xlsx")    print("="*40)# 创建优化器    optimizer = LogisticsPriceOptimizer("物流报价数据.xlsx")# 加载数据if optimizer.load_price_data() isNone:return# 计算几个示例重量    test_weights = [0.20.41.5]for weight in test_weights:        print(f"\n计算重量: {weight}KG")        optimal, _ = optimizer.calculate_for_weight(weight)if optimal isnotNone:            best = optimal.iloc[0]            print(f"   最优: {best['渠道']} - ¥{best['收费']}")if __name__ == "__main__":# 运行主程序    main()# 或者运行简单测试# test_simple()# 或者使用快速函数# 示例: 计算单个重量# optimal = quick_calculate(0.4)# 示例: 批量计算# weights = [0.1, 0.5, 1.0, 2.0]# results = batch_calculate_weights(weights)

获取和交流

需要本章或其他文章的源码和数据的同学,关注+三连,在对应文章下评论“6666“,加下面微信,发你!也可以拉你进群交流学习,加群备注:IT小本本学习

为了能随时获取最新动态,大家可以动动小手将公众号添加到“星标⭐”哦,点赞 + 关注,用时不迷路!!!!

关注公众号:IT小本本 👇

用时不迷路!!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-28 21:45:22 HTTP/2.0 GET : https://f.mffb.com.cn/a/483612.html
  2. 运行时间 : 0.213158s [ 吞吐率:4.69req/s ] 内存消耗:4,563.69kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=334694878638f89f165a31b59bd1111e
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001032s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001418s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000724s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002401s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001391s ]
  6. SELECT * FROM `set` [ RunTime:0.000707s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001513s ]
  8. SELECT * FROM `article` WHERE `id` = 483612 LIMIT 1 [ RunTime:0.003834s ]
  9. UPDATE `article` SET `lasttime` = 1774705522 WHERE `id` = 483612 [ RunTime:0.007920s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000702s ]
  11. SELECT * FROM `article` WHERE `id` < 483612 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001127s ]
  12. SELECT * FROM `article` WHERE `id` > 483612 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000924s ]
  13. SELECT * FROM `article` WHERE `id` < 483612 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001626s ]
  14. SELECT * FROM `article` WHERE `id` < 483612 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.006410s ]
  15. SELECT * FROM `article` WHERE `id` < 483612 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.006141s ]
0.217075s