当前位置:首页>python>Python 时间序列分析与预测:从统计模型到深度学习

Python 时间序列分析与预测:从统计模型到深度学习

  • 2026-03-12 11:13:36
Python 时间序列分析与预测:从统计模型到深度学习

时间序列预测是数据分析最有价值的方向之一,广泛应用于销量预测、股价分析、异常检测等场景。本文从时序数据的基础分析到 ARIMA、Prophet、LSTM 等主流预测方法,带你系统掌握时间序列全链路。


一、时间序列基础

1.1 核心概念

时间序列由四个成分叠加而成:

成分
说明
示例
趋势
(Trend)
长期变化方向
电商销售额逐年增长
季节性
(Seasonality)
固定周期内的规律波动
零售在双十一前后激增
周期性
(Cyclicity)
不固定周期的波动
经济景气周期
残差
(Residual)
无规律的随机噪声
-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import seasonal_decompose, STL

# 生成示例时序数据(模拟月销售额)
np.random.seed(42)
n = 120# 10年月数据
dates = pd.date_range("2014-01", periods=n, freq="ME")

trend     = np.linspace(10005000, n)
seasonal  = 500 * np.sin(2 * np.pi * np.arange(n) / 12)
noise     = np.random.normal(0150, n)
sales     = trend + seasonal + noise

ts = pd.Series(sales, index=dates, name="sales")

# 经典分解
result = seasonal_decompose(ts, model="additive", period=12)
result.plot()
plt.suptitle("时间序列加法分解", fontsize=14)
plt.tight_layout()
plt.show()

# STL 分解(更鲁棒,推荐使用)
stl = STL(ts, period=12, robust=True)
res = stl.fit()
res.plot()
plt.show()

1.2 平稳性检验(建模前必做)

from statsmodels.tsa.stattools import adfuller, kpss

deftest_stationarity(series, name=""):
"""ADF 检验 + KPSS 检验双重验证"""

# ADF 检验:H0 = 有单位根(非平稳)
    adf_result = adfuller(series.dropna(), autolag="AIC")
    adf_stat, adf_p = adf_result[0], adf_result[1]

# KPSS 检验:H0 = 平稳
    kpss_result = kpss(series.dropna(), regression="c")
    kpss_stat, kpss_p = kpss_result[0], kpss_result[1]

    print(f"{'='*50}")
    print(f"序列: {name}")
    print(f"ADF  检验:统计量={adf_stat:.4f},p值={adf_p:.4f}")
    print(f"KPSS 检验:统计量={kpss_stat:.4f},p值={kpss_p:.4f}")

if adf_p < 0.05and kpss_p > 0.05:
        print("✅ 结论:序列平稳")
elif adf_p >= 0.05and kpss_p <= 0.05:
        print("❌ 结论:序列非平稳,需要差分")
else:
        print("⚠️  结论:两个检验结论矛盾,需进一步分析")

test_stationarity(ts, "原始序列")

# 差分处理使序列平稳
ts_diff = ts.diff().dropna()
test_stationarity(ts_diff, "一阶差分")

1.3 自相关与偏自相关分析

from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

fig, axes = plt.subplots(22, figsize=(148))

# 原始序列
plot_acf(ts, lags=40, ax=axes[00], title="原始序列 ACF")
plot_pacf(ts, lags=40, ax=axes[01], title="原始序列 PACF")

# 差分后序列
plot_acf(ts_diff, lags=40, ax=axes[10], title="一阶差分 ACF")
plot_pacf(ts_diff, lags=40, ax=axes[11], title="一阶差分 PACF")

plt.tight_layout()
plt.show()

# 读图指南:
# PACF 在 lag=p 后截断 → AR(p) 模型
# ACF  在 lag=q 后截断 → MA(q) 模型
# 两者都拖尾         → ARMA(p,q) 模型

二、经典统计模型

2.1 ARIMA 模型(自动参数选择)

from statsmodels.tsa.arima.model import ARIMA
from statsmodels.tsa.statespace.sarimax import SARIMAX
import warnings
warnings.filterwarnings("ignore")

# 训练集/测试集拆分(时序不能随机拆分!)
train = ts[:-12]   # 保留最后12个月作为测试集
test  = ts[-12:]

# 手动指定 ARIMA(p,d,q)
model = ARIMA(train, order=(212))
result = model.fit()
print(result.summary())

# 预测
forecast = result.get_forecast(steps=12)
pred_mean = forecast.predicted_mean
conf_int  = forecast.conf_int(alpha=0.05)

# 可视化
plt.figure(figsize=(125))
plt.plot(train, label="训练集")
plt.plot(test,  label="测试集",  color="green")
plt.plot(pred_mean, label="预测值", color="red", linestyle="--")
plt.fill_between(conf_int.index,
                 conf_int.iloc[:, 0], conf_int.iloc[:, 1],
                 alpha=0.2, color="red", label="95% 置信区间")
plt.title("ARIMA 预测结果")
plt.legend()
plt.show()

2.2 SARIMA:含季节项的 ARIMA

# 有明显季节性时,必须用 SARIMA
# SARIMA(p,d,q)(P,D,Q)[s]
# s=12 表示年度季节性(月数据)

model_sarima = SARIMAX(
    train,
    order=(111),           # 非季节项
    seasonal_order=(11112),  # 季节项,s=12
    enforce_stationarity=False,
    enforce_invertibility=False
)
result_sarima = model_sarima.fit(disp=False)
print(result_sarima.summary())

# 自动选参(暴力网格搜索)
from itertools import product

defauto_sarima(ts, max_p=3, max_q=3):
    best_aic = np.inf
    best_params = None

for p, d, q, P, Q in product(range(max_p+1), [0,1], range(max_q+1),
                                   range(2), range(2)):
try:
            model = SARIMAX(ts, order=(p,d,q), seasonal_order=(P,1,Q,12))
            res = model.fit(disp=False)
if res.aic < best_aic:
                best_aic = res.aic
                best_params = (p,d,q,P,Q)
except:
continue

    print(f"最优参数: SARIMA{best_params[:3]}{best_params[3:]}[12], AIC={best_aic:.2f}")
return best_params

2.3 指数平滑(Holt-Winters)

from statsmodels.tsa.holtwinters import ExponentialSmoothing

# Holt-Winters 三重指数平滑(趋势 + 季节性)
hw_model = ExponentialSmoothing(
    train,
    trend="add",          # 加性趋势
    seasonal="add",       # 加性季节性
    seasonal_periods=12,
    damped_trend=True# 阻尼趋势,避免长期过度外推
)
hw_result = hw_model.fit(optimized=True)  # 自动优化参数

hw_forecast = hw_result.forecast(12)
print(f"Holt-Winters MAE: {np.mean(np.abs(hw_forecast.values - test.values)):.2f}")

三、Prophet:Facebook 开源的工业级预测工具

Prophet 特别适合:有明显趋势+季节性、存在节假日效应、允许缺失值的业务场景。

3.1 Prophet 基础用法

# pip install prophet
from prophet import Prophet
from prophet.diagnostics import cross_validation, performance_metrics
from prophet.plot import plot_cross_validation_metric

# Prophet 要求 DataFrame 格式:ds(时间), y(目标值)
df_prophet = pd.DataFrame({"ds": ts.index, "y": ts.values})

# 配置模型
m = Prophet(
    yearly_seasonality=True,       # 年度季节性
    weekly_seasonality=False,      # 月数据无需周季节性
    daily_seasonality=False,
    seasonality_mode="additive",   # 加性(乘性用 "multiplicative")
    changepoint_prior_scale=0.05,  # 趋势变化点灵敏度(越大越灵活)
    seasonality_prior_scale=10.0,  # 季节性强度
    interval_width=0.95# 不确定性区间宽度
)

# 添加节假日效应
holidays = pd.DataFrame({
"holiday""double_eleven",
"ds":      pd.to_datetime(["2014-11-11","2015-11-11","2016-11-11",
"2017-11-11","2018-11-11","2019-11-11"]),
"lower_window"-2,   # 节前2天
"upper_window"1,    # 节后1天
})
m = Prophet(holidays=holidays)

m.fit(df_prophet[df_prophet["ds"] < "2023-01-01"])

# 预测
future = m.make_future_dataframe(periods=12, freq="ME")
forecast = m.predict(future)

# 可视化
fig1 = m.plot(forecast)
fig2 = m.plot_components(forecast)
plt.show()

3.2 Prophet 交叉验证评估

# 时序交叉验证
df_cv = cross_validation(
    m,
    initial="730 days",     # 初始训练集大小
    period="180 days",       # 每隔多久做一次预测
    horizon="365 days",      # 预测多远
    parallel="processes"
)

# 计算各种误差指标
df_perf = performance_metrics(df_cv)
print(df_perf[["horizon""mae""rmse""mape"]].tail(10))

# 可视化 MAPE 随预测步长的变化
plot_cross_validation_metric(df_cv, metric="mape")
plt.show()

四、深度学习方法

4.1 LSTM 时序预测

import torch
import torch.nn as nn
from torch.utils.data import Dataset, DataLoader

# 数据预处理:创建滑动窗口样本
defcreate_sequences(data, lookback=24, horizon=12):
"""
    lookback: 用过去多少步预测未来
    horizon:  预测未来多少步
    """

    X, y = [], []
for i in range(len(data) - lookback - horizon + 1):
        X.append(data[i : i + lookback])
        y.append(data[i + lookback : i + lookback + horizon])
return np.array(X), np.array(y)

# 标准化
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
ts_scaled = scaler.fit_transform(ts.values.reshape(-11)).flatten()

X, y = create_sequences(ts_scaled, lookback=24, horizon=12)

# 划分训练/测试集
split = int(len(X) * 0.8)
X_train, X_test = X[:split], X[split:]
y_train, y_test = y[:split], y[split:]

X_train_t = torch.FloatTensor(X_train).unsqueeze(-1)  # (batch, seq, features)
y_train_t = torch.FloatTensor(y_train)
X_test_t  = torch.FloatTensor(X_test).unsqueeze(-1)
y_test_t  = torch.FloatTensor(y_test)

# LSTM 模型
classLSTMForecaster(nn.Module):
def__init__(self, input_size=1, hidden_size=64, num_layers=2,
                 dropout=0.2, output_size=12)
:

        super().__init__()
        self.lstm = nn.LSTM(
            input_size=input_size,
            hidden_size=hidden_size,
            num_layers=num_layers,
            dropout=dropout,
            batch_first=True
        )
        self.fc = nn.Sequential(
            nn.Linear(hidden_size, 32),
            nn.ReLU(),
            nn.Linear(32, output_size)
        )

defforward(self, x):
        out, (h_n, c_n) = self.lstm(x)
return self.fc(out[:, -1, :])  # 取最后一步的隐状态

model     = LSTMForecaster()
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, patience=10, factor=0.5)

# 训练
train_losses, val_losses = [], []

for epoch in range(200):
    model.train()
    optimizer.zero_grad()
    pred = model(X_train_t)
    loss = criterion(pred, y_train_t)
    loss.backward()
    torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)  # 梯度裁剪
    optimizer.step()

    model.eval()
with torch.no_grad():
        val_pred = model(X_test_t)
        val_loss = criterion(val_pred, y_test_t)

    scheduler.step(val_loss)
    train_losses.append(loss.item())
    val_losses.append(val_loss.item())

if (epoch + 1) % 50 == 0:
        print(f"Epoch {epoch+1:3d} | Train Loss: {loss:.6f} | Val Loss: {val_loss:.6f}")

# 反归一化预测结果
model.eval()
with torch.no_grad():
    test_pred_scaled = model(X_test_t).numpy()

test_pred = scaler.inverse_transform(test_pred_scaled)
y_true    = scaler.inverse_transform(y_test)

4.2 N-BEATS / Transformer 方案(现代方法)

# Nixtla 的 neuralforecast 库包含最新时序深度学习模型
# pip install neuralforecast

from neuralforecast import NeuralForecast
from neuralforecast.models import NBEATS, NHITS, PatchTST
from neuralforecast.losses.pytorch import MAE

df_nf = pd.DataFrame({
"unique_id""series_1",
"ds":        ts.index,
"y":         ts.values
})

# N-BEATS(可解释的深度学习时序模型)
models = [
    NBEATS(
        h=12,              # 预测步长
        input_size=36,     # 回看窗口
        max_steps=500,
        loss=MAE(),
        scaler_type="standard"
    ),
# NHITS:多尺度插值,适合长序列
    NHITS(h=12, input_size=36, max_steps=500, loss=MAE()),
]

nf = NeuralForecast(models=models, freq="ME")
nf.fit(df_nf)
forecast = nf.predict()
print(forecast.tail())

五、模型评估与选择

5.1 评估指标

from sklearn.metrics import mean_absolute_error, mean_squared_error

defevaluate_forecast(y_true, y_pred, model_name=""):
    mae  = mean_absolute_error(y_true, y_pred)
    rmse = np.sqrt(mean_squared_error(y_true, y_pred))
    mape = np.mean(np.abs((y_true - y_pred) / (y_true + 1e-8))) * 100
    smape = np.mean(2 * np.abs(y_true - y_pred) /
                    (np.abs(y_true) + np.abs(y_pred) + 1e-8)) * 100

    print(f"\n{'='*40}")
    print(f"模型:{model_name}")
    print(f"MAE  : {mae:.4f}    (绝对误差均值)")
    print(f"RMSE : {rmse:.4f}   (对大误差更敏感)")
    print(f"MAPE : {mape:.2f}%  (相对误差,受极小值影响)")
    print(f"SMAPE: {smape:.2f}% (对称相对误差,更稳健)")
return {"mae": mae, "rmse": rmse, "mape": mape, "smape": smape}

5.2 方法对比

方法
优点
缺点
适用场景
ARIMA
理论完备,可解释
需要手调参数,不处理非线性
单序列,统计分析
SARIMA
处理季节性
慢,参数多
有强季节性的序列
Holt-Winters
快,直观
仅限加/乘性季节性
简单业务场景
Prophet
自动处理趋势变化点、节假日
不适合高频、金融数据
业务指标预测
LightGBM
可加入外部特征,快,精度高
需要大量特征工程
多变量、有外部因素
LSTM
捕捉长期依赖
需要大量数据,难调参
复杂非线性序列
N-BEATS
可解释,无需特征工程
相对较新,文档少
零售销量等

六、实战建议

# 时序预测的通用 Baseline 策略(先做 Baseline,再尝试复杂模型)

classTimeSeriesBaseline:
"""三种简单 Baseline,复杂模型必须打败它们"""

defnaive_forecast(self, train, h):
"""朴素预测:用最后一个值预测未来所有步"""
return np.full(h, train.iloc[-1])

defseasonal_naive(self, train, h, period=12):
"""季节性朴素预测:用去年同期值预测"""
        last_season = train.values[-period:]
return np.tile(last_season, h // period + 1)[:h]

defmoving_average(self, train, h, window=12):
"""移动平均预测"""
return np.full(h, train.iloc[-window:].mean())

baseline = TimeSeriesBaseline()
naive_pred  = baseline.naive_forecast(train, h=12)
season_pred = baseline.seasonal_naive(train, h=12)
ma_pred     = baseline.moving_average(train, h=12)

evaluate_forecast(test.values, naive_pred,  "朴素预测")
evaluate_forecast(test.values, season_pred, "季节性朴素")
evaluate_forecast(test.values, ma_pred,     "移动平均")

时序预测没有万能模型,实际项目中建议:先 EDA → 做分解 → 建 Baseline → 试统计模型 → 试 ML/DL 模型 → 集成融合。最终指标必须超过 Baseline,否则简单模型就够用了。

欢迎点赞收藏,如有问题欢迎在评论区交流!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 16:41:37 HTTP/2.0 GET : https://f.mffb.com.cn/a/479412.html
  2. 运行时间 : 0.289249s [ 吞吐率:3.46req/s ] 内存消耗:4,733.85kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=14758014ac04fbad4c672e773e7625fb
  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.001136s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001733s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000749s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000693s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001460s ]
  6. SELECT * FROM `set` [ RunTime:0.000631s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001427s ]
  8. SELECT * FROM `article` WHERE `id` = 479412 LIMIT 1 [ RunTime:0.039801s ]
  9. UPDATE `article` SET `lasttime` = 1774600898 WHERE `id` = 479412 [ RunTime:0.001198s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000577s ]
  11. SELECT * FROM `article` WHERE `id` < 479412 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.004319s ]
  12. SELECT * FROM `article` WHERE `id` > 479412 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002227s ]
  13. SELECT * FROM `article` WHERE `id` < 479412 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.040345s ]
  14. SELECT * FROM `article` WHERE `id` < 479412 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.020736s ]
  15. SELECT * FROM `article` WHERE `id` < 479412 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.013364s ]
0.292233s