当前位置:首页>python>[Python] 完整复现-顶刊高频方法“双约束线”

[Python] 完整复现-顶刊高频方法“双约束线”

  • 2026-07-03 12:50:50
[Python] 完整复现-顶刊高频方法“双约束线”

点击上方蓝字关注我们

在生态环境、自然地理及可持续发展研究中,面对海量的散点数据,传统的线性回归模型通常难以全面反映变量间的真实关系。由于真实生态系统的高度复杂性,生态系统服务与气象、地形、社会经济等驱动因子之间,往往存在显著的非线性交互作用(Nonlinear Interactions)阈值效应(Threshold Effects)

为了准确刻画这些非线性特征,“双约束线”(Dual-Constraint Lines)分析框架被提出并广泛应用。本文将系统梳理该方法的底层统计原理典型应用场景,并提供完整的 Python 实现代码,以期为相关领域的数据分析与可视化工作提供客观参考。

替换自变量与因变量即可使用!

1 什么是“双约束线”?它为什么如此强大?

在散点图中,数据点往往呈现出一团不规则的“云”状分布。传统的回归分析(如 OLS)关注的是数据的“平均趋势”,直接穿透点云的中心。但这忽略了一个致命问题:在生态系统中,起决定作用的往往不是“平均水平”,而是“极限边界”。

“约束线”方法(Constraint Line Method)的核心思想正是去寻找数据分布的边界包络线。而“双约束线”框架,顾名思义,同时关注了上限和下限:

  • 上约束线(Upper Constraint Curve): 代表在某一特定驱动因子(如降水、温度、NDVI 或其他生态服务)的作用下,目标生态服务所能达到的最大潜在承载力

  • 下约束线(Lower Constraint Curve): 代表在多重复杂因素的干扰下,该生态服务可能跌落的最低底线

2核心统计学原理

双约束线的提取并不是简单地把最外围的点连起来(那样极其容易受到极端异常值的干扰),而是基于严谨的统计学步骤:

  1. 分段分位数回归(Segmented Quantile Regression): 将 X 轴划分为多个等距区间(Bins),在每个区间内提取高分位点(如 99.9%)作为上限候选点,提取低分位点(如 0.1%)作为下限候选点。

  2. Tukey 栅栏法去噪: 利用四分位距(IQR)对提取出的边界点进行过滤,剔除偶发的极端异常值。

  3. 受限三次样条拟合(Restricted Cubic Splines, RCS): 这是最关键的一步。普通的平滑曲线在数据两端容易出现剧烈震荡(过拟合),而 RCS 强制规定了曲线在两端节点外呈线性,从而在保证曲线整体平滑且连续的同时,极大地提高了边界拟合的稳健性。


3 双约束线的三大核心应用场景

掌握了双约束线,你能用它在论文里写出什么样的好故事?以下是三大经典应用:

1. 精准识别“生态阈值”(Threshold Identification)上约束线通常呈现“倒 U 型”或“单调饱和型”。倒 U 型曲线的顶点(导数为 0 的位置)即为关键阈值点(Tipping Point)。例如,随着植被覆盖度(NDVI)增加,产水量(Water Yield)最初会协同上升;但当 NDVI 超过某个阈值(如 0.57)后,过度的蒸腾作用反而会导致产水量下降。找到这个阈值,就能为“退耕还林”等生态工程提供科学的造林密度指导。

2. 揭示隐藏的“生态风险”(Ecological Risk Warning)许多研究只看上限,却忽略了下限。双约束线的巧妙之处在于,将拟合出的下约束线与政策规定的“生态红线”(Baseline)进行比对。如果某个区域的下约束线跌破了基线(例如最低生态基流、最低碳汇标准),即使它的上限表现很好,这里也是一个亟待干预的高风险脆弱区。

3. 洞察人类活动对自然机制的“扭曲”(Anthropogenic Disturbance)通过对比自然保护区(无干扰)与人类高强度活动区(如农田、城镇)的双约束线,可以清晰地看到人类活动如何导致阈值延迟(Threshold Postponement)上限衰减(Attenuation)。这为协调经济发展与生态安全提供了极具说服力的直观证据。

4完整 Python 复现代码

下面这段 Python 代码为您打通了从数据加载、区间切片、异常值剔除、RCS平滑拟合,到极值点(阈值)计算与最终出图的全流程。代码严格遵守顶刊规范:设置了 Times New Roman(英文)与 宋体(中文)的字体组合,带有置信区间阴影,并自动标注出阈值坐标与拟合优度 R2

请确保您的运行环境中已安装:pandasnumpymatplotlibstatsmodelspatsy

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport statsmodels.formula.api as smffrom patsy import crimport warningswarnings.filterwarnings('ignore')# 地数空间-地学小助手-太阳花🌻# ==========================================# 1. 字体与绘图全局设置# ==========================================# 设置全局字体:英文为 Times New Roman,中文为宋体plt.rcParams['font.sans-serif'] = ['SimSun']  # 用来正常显示中文标签plt.rcParams['font.family'] = 'sans-serif'plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号plt.rcParams['font.serif'] = ['Times New Roman']# ==========================================# 2. 数据加载与参数设置# ==========================================# 请确认文件路径正确file_path = r"E:\data_study1双约束线\data1.xlsx"df = pd.read_excel(file_path)# 定义变量target_y = 'HQ'  # 因变量features_x = ['DEM''dist_waterway''TEMP''PRCP''Population''LHGI'              'GPP''FTI''LE''ETP''Nightlight''RX5day''CDD''TNn''TXx']# ==========================================# 3. 核心算法函数 (新增统计指标提取)# ==========================================def tukey_fences_filter(x, y):    """使用 Tukey's fences (IQR) 剔除异常值"""    q1 = np.percentile(y, 25)    q3 = np.percentile(y, 75)    iqr = q3 - q1    lower_bound = q1 - 1.5 * iqr    upper_bound = q3 + 1.5 * iqr    mask = (y >= lower_bound) & (y <= upper_bound)    return x[mask], y[mask]def fit_restricted_cubic_spline(x, y, df_spline=4):    """对过滤后的散点进行受限三次样条拟合(RCS),并返回完整统计指标"""    data = pd.DataFrame({'x': x, 'y': y})    data = data.dropna().sort_values('x')    # 使用 patsy 创建受限三次样条,df=4 通常设置3个内部节点    formula = "y ~ cr(x, df={})".format(df_spline)    try:        model = smf.ols(formula, data=data).fit()        # 生成平滑的预测线        x_pred = np.linspace(data['x'].min(), data['x'].max(), 300)        pred_data = pd.DataFrame({'x': x_pred})        predictions = model.get_prediction(pred_data)        y_pred = predictions.predicted_mean        y_ci_lower = predictions.conf_int()[:, 0]        y_ci_upper = predictions.conf_int()[:, 1]        # 计算极值点 (导数为0处) - 即阈值点        dy = np.gradient(y_pred, x_pred)        # 寻找平稳点(斜率变号)        sign_dy = np.sign(dy)        sign_changes = ((np.roll(sign_dy, 1) - sign_dy) != 0).astype(int)        sign_changes[0] = 0        peak_idx = np.argmax(y_pred) # 上约束通常找最高点        valley_idx = np.argmin(y_pred) # 下约束找最低点        # ★ 新增:提取丰富的统计指标 ★        stats = {            'R_squared': model.rsquared,            'Adj_R_squared': model.rsquared_adj,            'F_statistic': model.fvalue,            'P_value': model.f_pvalue,            'AIC': model.aic,            'BIC': model.bic,            'RMSE': np.sqrt(model.mse_resid) # 残差均方差的平方根        }        return x_pred, y_pred, y_ci_lower, y_ci_upper, x_pred[peak_idx], y_pred[peak_idx], x_pred[valley_idx], y_pred[valley_idx], stats    except Exception as e:        return NoneNoneNoneNoneNoneNoneNoneNoneNone# ==========================================# 4. 绘图与统计结果收集循环# ==========================================fig = plt.figure(figsize=(2025))fig.subplots_adjust(hspace=0.4, wspace=0.3)# 创建一个空列表,用于收集所有的统计信息stats_results_list = []for idx, x_var in enumerate(features_x):    ax = fig.add_subplot(53, idx + 1)    # 提取当前数据并剔除缺失值    temp_df = df[[x_var, target_y]].dropna()    x_data = temp_df[x_var].values    y_data = temp_df[target_y].values    # 原始数据散点(浅灰色)    ax.scatter(x_data, y_data, color='lightgray', alpha=0.5, s=10, label='Original Data')    # 1. 将 X 分为 100 个等宽的区间(Bins)    bins = np.linspace(np.min(x_data), np.max(x_data), 101)    bin_indices = np.digitize(x_data, bins)    x_binned = []    y_upper_999 = []    y_lower_001 = []    for b in range(1101):        in_bin = y_data[bin_indices == b]        in_bin_x = x_data[bin_indices == b]        if len(in_bin) > 0:            x_binned.append(np.mean(in_bin_x)) # 该区间X的均值            y_upper_999.append(np.percentile(in_bin, 99.9))            y_lower_001.append(np.percentile(in_bin, 0.1))    x_binned = np.array(x_binned)    y_upper_999 = np.array(y_upper_999)    y_lower_001 = np.array(y_lower_001)    # 2. Tukey's Fences 异常值剔除    x_up_clean, y_up_clean = tukey_fences_filter(x_binned, y_upper_999)    x_low_clean, y_low_clean = tukey_fences_filter(x_binned, y_lower_001)    # 绘制上约束过滤后的散点    ax.scatter(x_up_clean, y_up_clean, color='crimson', alpha=0.8, s=20, edgecolors='k', linewidth=0.5)    # 绘制下约束过滤后的散点    ax.scatter(x_low_clean, y_low_clean, color='dodgerblue', alpha=0.8, s=20, edgecolors='k', linewidth=0.5)    # 3. 受限三次样条拟合 (接收新的统计字典参数)    x_pred_up, y_pred_up, ci_low_up, ci_hi_up, peak_x_up, peak_y_up, _, _, stats_up = fit_restricted_cubic_spline(x_up_clean, y_up_clean)    x_pred_low, y_pred_low, ci_low_low, ci_hi_low, _, _, valley_x_low, valley_y_low, stats_low = fit_restricted_cubic_spline(x_low_clean, y_low_clean)    # 绘制上约束拟合线与置信区间    if x_pred_up is not None:        r2_up = stats_up['R_squared'# 获取R²用于图表展示        ax.plot(x_pred_up, y_pred_up, color='crimson', linewidth=2.5, label='Upper Constraint')        ax.fill_between(x_pred_up, ci_low_up, ci_hi_up, color='crimson', alpha=0.15)        # 标注阈值线 (峰值)        ax.axvline(peak_x_up, color='black', linestyle='--', alpha=0.7)        ax.scatter(peak_x_up, peak_y_up, color='white', edgecolors='crimson', s=60, zorder=5)        ax.text(peak_x_up, peak_y_up * 1.02f"({peak_x_up:.2f}{peak_y_up:.2f})"                fontname='Times New Roman', fontsize=10, ha='center', color='crimson')        # 标出 R^2        ax.text(0.950.95f'$R^2$={r2_up:.2f}', transform=ax.transAxes, ha='right', va='top'                color='crimson', fontname='Times New Roman', fontsize=10, bbox=dict(facecolor='white', alpha=0.6, edgecolor='crimson'))        # 记录上约束统计指标        up_info = {'Variable': x_var, 'Constraint_Type''Upper''Threshold_X': peak_x_up, 'Threshold_Y': peak_y_up}        up_info.update(stats_up)        stats_results_list.append(up_info)    # 绘制下约束拟合线与置信区间    if x_pred_low is not None:        r2_low = stats_low['R_squared'# 获取R²用于图表展示        ax.plot(x_pred_low, y_pred_low, color='dodgerblue', linewidth=2.5, label='Lower Constraint')        ax.fill_between(x_pred_low, ci_low_low, ci_hi_low, color='dodgerblue', alpha=0.15)        # 标出 R^2        ax.text(0.950.05f'$R^2$={r2_low:.2f}', transform=ax.transAxes, ha='right', va='bottom'                color='dodgerblue', fontname='Times New Roman', fontsize=10, bbox=dict(facecolor='white', alpha=0.6, edgecolor='dodgerblue'))        # 记录下约束统计指标        low_info = {'Variable': x_var, 'Constraint_Type''Lower''Threshold_X': valley_x_low, 'Threshold_Y': valley_y_low}        low_info.update(stats_low)        stats_results_list.append(low_info)    # 设置网格与外观    ax.grid(True, linestyle='--', alpha=0.4)    ax.set_title(f'HQ = f({x_var})', fontname='Times New Roman', fontsize=14, fontweight='bold')    ax.set_xlabel(f'{x_var}', fontname='Times New Roman', fontsize=12)    ax.set_ylabel('HQ', fontname='Times New Roman', fontsize=12)    # 设置刻度字体    for label in ax.get_xticklabels() + ax.get_yticklabels():        label.set_fontname('Times New Roman')        label.set_fontsize(11)# ==========================================# 5. 全局排版、导出图片及统计表格# ==========================================# 添加全局图例handles, labels = ax.get_legend_handles_labels()fig.legend(handles, labels, loc='lower center', ncol=3, fontsize=14, prop={'family''Times New Roman'}, bbox_to_anchor=(0.50.08))plt.suptitle("Dual-Constraint Framework for Ecosystem Service (HQ) Optimization"             fontsize=20, fontname='Times New Roman', y=0.92, fontweight='bold')# ★ 导出图片:同时保存为 PNG(预览用) 和 PDF(发文章用矢量图) ★output_png = r"E:\data_study1双约束线\Dual_Constraint_Plot.png"output_pdf = r"E:\data_study1双约束线\Dual_Constraint_Plot.pdf"plt.savefig(output_png, dpi=300, bbox_inches='tight')plt.savefig(output_pdf, format='pdf', dpi=300, bbox_inches='tight')plt.show()# ★ 导出统计指标至 Excel ★output_excel = r"E:\data_study1双约束线\Dual_Constraint_Statistics.xlsx"stats_df = pd.DataFrame(stats_results_list)stats_df.to_excel(output_excel, index=False, float_format="%.4f")

出图

统计输出信息

完整代码与示例数据已上传微信小程序:地学小助手统计分析方法模块,无套路-直接下载-免费获取!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 11:05:07 HTTP/2.0 GET : https://f.mffb.com.cn/a/488510.html
  2. 运行时间 : 0.173590s [ 吞吐率:5.76req/s ] 内存消耗:5,050.87kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=e78ce8f7e3a3b83b60ae9b35cc6ce5bd
  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.000581s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000741s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002819s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.012547s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000584s ]
  6. SELECT * FROM `set` [ RunTime:0.000239s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000650s ]
  8. SELECT * FROM `article` WHERE `id` = 488510 LIMIT 1 [ RunTime:0.001640s ]
  9. UPDATE `article` SET `lasttime` = 1783134307 WHERE `id` = 488510 [ RunTime:0.013884s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.009547s ]
  11. SELECT * FROM `article` WHERE `id` < 488510 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000639s ]
  12. SELECT * FROM `article` WHERE `id` > 488510 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000501s ]
  13. SELECT * FROM `article` WHERE `id` < 488510 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.005105s ]
  14. SELECT * FROM `article` WHERE `id` < 488510 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.034390s ]
  15. SELECT * FROM `article` WHERE `id` < 488510 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.016449s ]
0.175420s