当前位置:首页>python>第215讲:洞察“红鲱鱼”:VBA和Python双方案用统计学方法自动识别异常超长通话

第215讲:洞察“红鲱鱼”:VBA和Python双方案用统计学方法自动识别异常超长通话

  • 2026-03-27 12:23:27
第215讲:洞察“红鲱鱼”:VBA和Python双方案用统计学方法自动识别异常超长通话

在客服中心的质量管理体系中,有一种数据被称为“红鲱鱼”——它异常显眼,可能转移你对核心问题的注意力,但其本身也需被妥善处理。异常超长的通话就是典型的“红鲱鱼”:它们可能是一次复杂的客户纠纷,可能是座席忘记挂机,也可能是系统挂起故障。无论如何,它们会严重拉高平均处理时长,扭曲团队绩效数据,并可能隐藏服务质量风险。

手动从成千上万条记录中筛选这些异常值效率低下。本文将介绍如何运用统计学原理,自动化识别并标记这些“红鲱鱼”,并分别提供在Excel VBA环境和Python数据分析环境下的两套工业级解决方案。


一、 业务逻辑:为什么是“平均值 ± 3倍标准差”?

识别异常值,首要问题是定义“异常”。一个直观但粗陋的方法是设定固定阈值(如“超过1小时”)。但这种方法忽略了不同业务、不同时段通话时长的自然波动。统计学家告诉我们,对于大致呈正态分布的数据,绝大多数值会落在均值附近的特定范围内。

3σ 法则(经验法则)指出:对于正态分布的数据,约有99.73%的数据点落在“平均值 ± 3倍标准差”的区间内。换言之,落在此区间外的数据点,仅有约0.27%的概率属于正常波动,因此我们可以高度怀疑其为异常值。

在客服通话场景中的应用

  1. 计算基线:基于历史或同期数据,计算所有通话时长的平均值(μ)和标准差(σ)。

  2. 设定动态阈值:阈值 = μ + 3σ。这个阈值能随数据的整体分布动态调整,比固定阈值更科学。

  3. 识别异常:将每条通话的时长与阈值比较,超过者标记为“超长通话(待核查)”。

重要前提与思考

  • 分布假设:通话时长通常不严格服从正态分布(多为右偏分布),但3σ法则在识别极端大值方面依然非常有效和稳健。

  • Z值(Z-score):这是另一个关键概念,Z = (数据点值 - 平均值) / 标准差。它衡量了数据点偏离均值多少个标准差。当Z > 3时,即对应“超过均值+3倍标准差”。


二、 Excel VBA实现:内置函数与循环遍历

对于数据量适中(如数万条),且分析流程深度依赖Excel报表的团队,使用VBA可以构建一个内嵌的自动化标记工具。

实现原理

  1. 统计分析:使用Application.WorksheetFunction.StDev_PAverage函数计算整个数据集的平均值和标准差。

  2. 阈值计算:设定阈值 = 平均值 + 3 * 标准差。

  3. 遍历标记:循环遍历每一行数据,如果通话时长大于阈值,则在指定列(如“异常标记”列)进行标记。

关键代码与详细注释

Sub MarkLongCalls()    Dim ws As Worksheet    Dim lastRow As Long, i As Long    Dim callTimeRng As Range    Dim avgTime As Double, stdTime As Double, threshold As Double    Dim callTimes() As Variant ' 用于存储时长数组,提高循环效率    Set ws = ThisWorkbook.Sheets("通话记录")    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row    ' 假设:A列是ID,B列是“通话时长”(以秒为单位)    Set callTimeRng = ws.Range("B2:B" & lastRow)    ' 1. 计算平均值与标准差(使用总体标准差StDev_P)    avgTime = Application.WorksheetFunction.Average(callTimeRng)    stdTime = Application.WorksheetFunction.StDev_P(callTimeRng)    threshold = avgTime + 3 * stdTime    ' 在表格旁输出统计信息,便于核查    ws.Range("E1").Value = "平均时长:"    ws.Range("F1").Value = Round(avgTime, 2) & " 秒"    ws.Range("E2").Value = "标准差:"    ws.Range("F2").Value = Round(stdTime, 2) & " 秒"    ws.Range("E3").Value = "异常阈值(μ+3σ):"    ws.Range("F3").Value = Round(threshold, 2) & " 秒"    ws.Range("E4").Value = "阈值(分钟):"    ws.Range("F4").Value = Round(threshold / 60, 2)    ' 2. 将数据读入数组,避免频繁读写单元格,大幅提升速度    callTimes = callTimeRng.Value    ' 3. 遍历并标记(假设C列为“异常标记”列)    Dim markCount As Long    markCount = 0    For i = LBound(callTimes, 1) To UBound(callTimes, 1)        If callTimes(i, 1) > threshold Then            ' 在C列对应行标记(注意数组索引与行号的偏移)            ws.Cells(i + 1, 3).Value = "超长通话(待核查)" ' i+1 因为数据从第2行开始            ' 可选:高亮整行            ws.Rows(i + 1).Interior.Color = RGB(255, 230, 230)            markCount = markCount + 1        Else            ' 确保非异常行标记被清除(防止上次运行结果干扰)            ws.Cells(i + 1, 3).ClearContents            ws.Rows(i + 1).Interior.Pattern = xlNone        End If    Next i    ' 4. 汇总报告    Dim msg As String    msg = "分析完成!" & vbNewLine    msg = msg & "共分析 " & (lastRow - 1) & " 条记录。" & vbNewLine    msg = msg & "平均时长: " & Round(avgTime, 1) & " 秒" & vbNewLine    msg = msg & "异常阈值(μ+3σ): " & Round(threshold, 1) & " 秒 (" & Round(threshold / 60, 1) & " 分钟)" & vbNewLine    msg = msg & "标记为超长通话的记录: " & markCount & " 条 (" & Format(markCount / (lastRow - 1), "0.00%") & ")"    MsgBox msg, vbInformation, "超长通话分析报告"End Sub

性能优化与注意事项

  • 数组操作:代码将通话时长读入callTimes数组,然后在内存中循环,这比反复读取单元格(ws.Cells(i, 2).Value)快一个数量级。

  • 标准差选择:使用StDev_P(总体标准差)而非StDev_S(样本标准差),因为我们通常将已有通话记录视为一个分析总体。

  • 结果可视化:除了文本标记,还添加了行高亮,使异常记录在表格中一目了然。

VBA方案的局限性

  1. 计算能力有限:对于数十万甚至百万行数据,VBA的循环和统计计算会变得非常缓慢。

  2. 灵活性不足:若要按不同客服组、不同时间段分别计算阈值,逻辑会变得复杂。

  3. 难以处理极端偏态:对于通话时长这种典型的右偏分布,均值易受极端值影响。虽然我们正是要找极端值,但在计算基线时,极端值本身会拉高均值和标准差,可能导致阈值过高。更稳健的方法可使用中位数四分位距,但在VBA中实现稍复杂。


三、 Python实现:向量化计算与Z-score筛选

对于大规模数据分析、需要自动化流水线或与更复杂分析(如聚类、预测)集成的场景,Python以其强大的科学计算库提供了更优雅、高效的解决方案。我们主要使用numpy进行向量化计算,并可结合pandas进行数据框操作。

实现原理

  1. 向量化计算:使用numpymean()std()函数一次性计算整个数列的均值、标准差和Z值,无需循环,效率极高。

  2. 布尔索引筛选:利用pandasnumpy的布尔索引功能,一行代码即可筛选出所有Z > 3的记录。

  3. 稳健统计量(进阶):可轻松引入基于中位数和四分位距的箱线图法,应对极度偏态分布。

关键代码与分步解析

import pandas as pdimport numpy as npdef identify_anomalous_calls(df, duration_col='通话时长_秒', z_threshold=3.0, use_iqr=False):    """    识别异常超长通话记录。    参数:    df: 包含通话记录的pandas DataFrame。    duration_col: 通话时长的列名。    z_threshold: Z分数阈值,默认3.0(即3倍标准差)。    use_iqr: 是否使用IQR(箱线图法)替代Z分数法。适用于非正态分布。    返回:    返回两个DataFrame:标记后的原始DataFrame(新增‘是否异常’和‘Z值’列),以及异常记录的DataFrame。    """    df_result = df.copy()    durations = pd.to_numeric(df_result[duration_col], errors='coerce')  # 确保为数值类型    if use_iqr:        # 方法二:基于IQR的箱线图法(对异常值不敏感,更稳健)        Q1 = durations.quantile(0.25)        Q3 = durations.quantile(0.75)        IQR = Q3 - Q1        threshold_iqr = Q3 + 3 * IQR  # 通常用1.5*IQR,这里用3倍以识别更极端的异常        df_result['是否异常'] = durations > threshold_iqr        df_result['异常阈值'] = threshold_iqr        method = f"IQR法 (Q3+3*IQR = {threshold_iqr:.2f}秒)"    else:        # 方法一:基于Z分数的方法(默认)        # 计算Z分数 (标准分数)        mean_duration = durations.mean()        std_duration = durations.std(ddof=0)  # ddof=0 表示总体标准差,与Excel的StDev_P一致        z_scores = (durations - mean_duration) / std_duration        threshold_z = mean_duration + z_threshold * std_duration        df_result['Z值'] = z_scores.round(3)        df_result['是否异常'] = z_scores > z_threshold        df_result['异常阈值'] = threshold_z        method = f"Z值法 (μ+{z_threshold}σ = {threshold_z:.2f}秒)"    # 生成异常记录子集    anomalous_calls = df_result[df_result['是否异常']].copy()    anomalous_calls = anomalous_calls.sort_values(by=duration_col, ascending=False)    # 输出分析报告    total_calls = len(df_result)    anomalous_count = len(anomalous_calls)    print("="*50)    print(f"超长通话分析报告 - {method}")    print("="*50)    print(f"分析总记录数: {total_calls}")    print(f"通话时长统计: 均值 = {durations.mean():.1f}秒, 标准差 = {durations.std():.1f}秒")    print(f"异常阈值: {df_result['异常阈值'].iloc[0]:.1f} 秒 ({df_result['异常阈值'].iloc[0]/60:.1f} 分钟)")    print(f"识别异常记录: {anomalous_count} 条 ({anomalous_count/total_calls*100:.2f}%)")    if anomalous_count > 0:        print(f"\n异常记录预览 (按时长降序):")        print(anomalous_calls[[duration_col, 'Z值' if not use_iqr else '''是否异常']].head(10).to_string())    print("="*50)    return df_result, anomalous_calls# --- 模拟数据与使用示例 ---# 生成模拟数据(包含少量极端值)np.random.seed(215)  # 设置随机种子保证结果可复现n = 10000# 模拟大部分通话时长在30秒到600秒之间,服从对数正态分布(右偏)normal_times = np.random.lognormal(mean=5.0, sigma=0.8, size=n-5)  # 正常通话normal_times = np.clip(normal_times, 301200)  # 限制范围# 模拟5个极端超长通话(“红鲱鱼”)anomaly_times = np.array([360072005500180004500])  # 1小时, 2小时, 1.5小时, 5小时, 1.25小时all_times = np.concatenate([normal_times, anomaly_times])np.random.shuffle(all_times)  # 打乱顺序df_simulated = pd.DataFrame({    '通话ID'range(1, n+1),    '客服工号': np.random.choice(['CS1001''CS1002''CS1003''CS1004'], n),    '通话时长_秒': all_times.round(1)})# 使用方法一:Z分数法(默认)df_marked, df_anomalies = identify_anomalous_calls(df_simulated, z_threshold=3.0)# 使用方法二:IQR法(对极端偏态数据更稳健)# df_marked_iqr, df_anomalies_iqr = identify_anomalous_calls(df_simulated, use_iqr=True)# 查看标记结果print("\n原始数据概览(前5行,新增了标记列):")print(df_marked[['通话ID''客服工号''通话时长_秒''Z值''是否异常']].head())# 保存结果df_marked.to_csv('通话记录_已标记异常.csv', index=False, encoding='utf-8-sig')df_anomalies.to_csv('超长通话记录_明细.csv', index=False, encoding='utf-8-sig')print(f"\n结果已保存。")

代码核心优势

  1. 向量化与高性能z_scores = (durations - mean_duration) / std_duration一行代码为所有数据点计算Z值,速度极快。

  2. 方法灵活可选:函数内置了基于Z分数和基于IQR(箱线图法)两种异常检测方法。IQR法不依赖正态分布假设,对极端值不敏感,更适合偏态分布,是更稳健的选择。

  3. 结果结构化:不仅标记原始数据,还直接分离出异常记录子集,并生成详细的分析报告,开箱即用。

  4. 易于扩展:可轻松集成分组分析(如df.groupby('客服工号').apply(identify_anomalous_calls)),为每个团队或个人计算个性化阈值。


四、 方案对比与决策指南

维度

Excel VBA 方案

Python 方案

适用数据规模

千条至数万条记录

万条至百万条甚至更多,性能无显著下降

计算效率

较慢,依赖循环

极快,基于向量化计算

方法灵活性

较单一,实现复杂方法(如IQR)代码冗长

极灵活,轻松切换Z分数、IQR等算法,或自定义规则

开发与维护

代码与特定工作簿绑定,维护和共享稍麻烦

代码独立,易于版本管理、模块化复用

输出与集成

结果在Excel中,便于即时查看和简单图表展示

可输出结构化报告、CSV文件,并无缝集成到数据分析流水线、BI看板

学习曲线

需掌握VBA语法

需掌握Python及pandas/numpy基础

选型建议

  • 使用Excel VBA:如果你的数据量不大,且整个分析、报告流程都固化在Excel文件中,希望一键点击生成结果,并且团队没有Python使用环境。

  • 使用Python:如果你需要处理大规模数据,希望流程自动化(如每日自动分析),需要进行更复杂的统计分析(如分组对比、趋势预测),或计划将异常检测作为更大数据管道中的一环。


五、 行动与洞察:标记之后做什么?

识别出“红鲱鱼”只是第一步,关键在于后续行动:

  1. 根因核查

    • 人工复查:抽查标记的通话录音或服务日志,判断是“复杂问题”、“服务瑕疵”、“忘记挂机”还是“系统故障”。

    • 模式归类:分析异常通话是否集中于特定客服、特定业务线或特定时段。

  2. 流程改进

    • 针对“忘记挂机”,可在系统层面增加挂机提醒或自动断线机制。

    • 针对某类复杂业务导致的超长通话,可优化知识库、提供升级支持通道或修改业务流程。

  3. 分析校准

    • 在计算团队整体绩效(如平均处理时长)时,可以考虑剔除这些已确认的异常值,以获得更能反映正常服务水平的指标。

    • 将异常通话分析纳入服务质量评估体系,作为发现系统性问题的线索。

通过将统计方法植入日常运营,我们不仅能高效地捕获“红鲱鱼”,更能将其转化为驱动服务优化和风险管控的宝贵输入。


知识检验:5道选择题

  1. 在识别异常超长通话时,使用“平均值 + 3倍标准差”作为阈值,主要依据的是以下哪个统计学原理或经验法则?

    A) 中心极限定理

    B) 大数定律

    C) 3σ法则(经验法则)

    D) 贝叶斯定理

  2. 在Python实现中,计算每个通话时长的Z值(Z-score)公式是“(个体值 - 平均值) / 标准差”。当一个通话的Z值等于3.5时,这意味着什么?

    A) 该通话时长比平均时长短3.5秒

    B) 该通话时长是平均时长的3.5倍

    C) 该通话时长比平均时长多出3.5个标准差

    D) 该通话时长是标准差的3.5倍

  3. 对于通话时长这类通常呈右偏分布的数据,使用基于平均值和标准差的Z分数法可能存在什么局限?此时,更稳健的替代方法是什么?

    A) 局限是计算太慢;替代方法是使用VBA。

    B) 局限是平均值易受极端值影响,导致阈值偏高;替代方法可使用基于中位数和四分位距的箱线图法。

    C) 没有局限,Z分数法是最佳方法。

    D) 局限是无法识别异常值;替代方法是设定固定阈值。

  4. 在Excel VBA解决方案中,将通话时长数据读入数组callTimes,然后在数组上进行循环判断,而不是直接反复读取单元格ws.Cells(i, 2).Value。这样做的主要目的是什么?

    A) 让代码更易读

    B) 大幅提升程序运行速度

    C) 避免使用条件格式

    D) 为了计算Z值

  5. 在Python的pandas库中,假设有一个DataFrame df包含‘通话时长’列,且已计算得到布尔序列is_anomaly(True表示异常)。要快速筛选出所有异常记录,应使用以下哪种方法?

    A) for index, row in df.iterrows(): if is_anomaly[index]: ...

    B) df[ df['通话时长'] > threshold ]

    C) df[ is_anomaly ]

    D) df.query('通话时长 > @threshold')


答案

  1. C。3σ法则(或经验法则)指出,对于近似正态分布的数据,约有99.73%的数据落在均值±3个标准差的范围内,因此之外的被视为极有可能的异常值。

  2. C。Z值的定义就是衡量数据点偏离均值多少个标准差。Z=3.5表示该通话时长比平均时长多出了3.5个标准差的距离,是极强的异常信号。

  3. B。右偏分布中,少数极大值会显著拉高平均值,同时增大标准差,可能导致Z分数法的阈值变得过高,漏掉一些相对异常的值。基于中位数和四分位距的箱线图法对极端值不敏感,能提供更稳定的异常检测基线。

  4. B。VBA操作内存数组的速度比反复读取和写入Excel单元格对象要快得多,这是优化VBA代码处理大量数据时的关键技巧。

  5. C。df[is_anomaly]是利用布尔索引进行筛选的标准且高效的方式。选项A是低效的循环;选项B和D是直接基于阈值比较,前提是已经计算好阈值,但题目给的条件是已得到布尔序列is_anomaly,因此C是最直接对应的。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 15:16:20 HTTP/2.0 GET : https://f.mffb.com.cn/a/483261.html
  2. 运行时间 : 0.217685s [ 吞吐率:4.59req/s ] 内存消耗:4,851.03kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c0f07e305bd19f7150591c49e399e735
  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.001081s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001865s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000750s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000740s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001455s ]
  6. SELECT * FROM `set` [ RunTime:0.000561s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001349s ]
  8. SELECT * FROM `article` WHERE `id` = 483261 LIMIT 1 [ RunTime:0.001330s ]
  9. UPDATE `article` SET `lasttime` = 1774595780 WHERE `id` = 483261 [ RunTime:0.025853s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.007086s ]
  11. SELECT * FROM `article` WHERE `id` < 483261 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001171s ]
  12. SELECT * FROM `article` WHERE `id` > 483261 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001145s ]
  13. SELECT * FROM `article` WHERE `id` < 483261 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002659s ]
  14. SELECT * FROM `article` WHERE `id` < 483261 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004620s ]
  15. SELECT * FROM `article` WHERE `id` < 483261 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002908s ]
0.221144s