当前位置:首页>渔业>渔业物种分布模型:理论 + R 实现,一篇讲透

渔业物种分布模型:理论 + R 实现,一篇讲透

  • 2026-02-07 20:22:41
渔业物种分布模型:理论 + R 实现,一篇讲透

渔业物种分布模型:理论 + R 实现,一篇讲透

1. 海洋空间生态学与渔业管理的范式转变

在过去的三十年里,全球海洋渔业管理经历了一场深刻的范式转变,从传统的单物种、静态种群评估向基于生态系统的渔业管理(Ecosystem-Based Fisheries Management, EBFM)迈进。这一转变的核心挑战在于如何量化和预测海洋生物在三维、高度动态且受气候变化显著影响的海洋环境中的空间分布。物种分布模型(Species Distribution Models, SDMs),在生态学文献中也常被称为生态位模型(Ecological Niche Models, ENMs)或栖息地适宜性模型(Habitat Suitability Models, HSMs),已成为应对这一挑战的关键统计工具。

SDM 的核心逻辑在于建立物种出现的观测记录(存在点或丰度)与环境预测变量(如海表温度、盐度、初级生产力、水深等)之间的统计或机器学习关系,进而将这种关系映射到未采样的地理空间或未来的时间情景中 。在渔业科学中,SDM 的应用早已超越了纯粹的理论生态学范畴,深入到了具有重大经济和生态意义的实际应用场景,包括但不限于:界定关键鱼类栖息地(Essential Fish Habitat, EFH)、标准化渔业依赖型数据的单位捕捞努力量渔获量(CPUE)、预测气候变化下商业鱼种的分布重心迁移、以及设计动态海洋保护区以减少兼捕 。

与陆地生态系统相比,海洋环境具有流体性、连通性和高度的时间变异性,这给 SDM 在渔业中的应用带来了独特的方法论挑战。例如,鱼类种群往往呈现出复杂的时空自相关结构,且渔业数据本身深受“优先采样”(fisheries prefer high-density areas)偏差的影响。本报告旨在对物种分布模型在渔业中的应用进行详尽的调研,涵盖模型算法的选择、数据预处理的艺术、背景点选取的策略、环境因子的生理学意义、典型应用案例,并提供基于 R 语言的完整工作流与代码实例。

2. 渔业数据的特性与预处理策略

构建稳健的 SDM 的第一步,也是最为关键的一步,是对原始数据进行严格的质量控制和预处理。渔业数据通常分为两大类:渔业独立数据(Fishery-independent data,如科学调查)和渔业依赖数据(Fishery-dependent data,如商业捕捞日志)。后者虽然数据量巨大,但存在极强的空间偏差。

2.1 数据来源与固有偏差

商业渔船不是随机采样的科学平台,它们是追求利润最大化的经济单元。渔民会根据经验、声纳探测和同伴信息,集中在鱼群密度最高的区域作业。这种“优先采样”会导致高密度区域的样本过剩,而低密度或未开发区域则缺乏数据。如果直接将这种数据输入模型,模型可能会将“捕捞努力量高”的区域误判为“环境适宜度高”的区域,从而得出有偏的生态位估计 。

相比之下,科学拖网调查通常采用分层随机抽样设计,提供了可靠的“存在-缺失”(Presence-Absence)数据,是校准模型和验证商业数据偏差的黄金标准 。然而,科学调查的成本高昂,时空覆盖范围通常有限,因此整合多源数据(Integrated SDMs)成为近年来的研究热点 。

2.2 空间稀疏化(Spatial Thinning)

为了缓解采样偏差和空间自相关(Spatial Autocorrelation)带来的影响,空间稀疏化是一种标准的数据清洗步骤。空间自相关是指相近位置的观测值往往比远处的观测值更相似(例如,如果一网捕到了鱼,相邻的一网很可能也捕到)。这违反了许多统计模型关于样本独立性的假设,导致参数估计的标准误偏低,显著性检验过于乐观(即第一类错误膨胀)。

空间稀疏化通过设定一个最小近邻距离阈值(如 5 km 或 10 km),在阈值范围内随机保留一个点并剔除其余点,从而强制样本在空间上保持独立。在 R 语言中,spThin 包提供了高效的算法来执行这一操作,能够在保留最大样本量的同时满足距离约束 9。近期的研究还推出了 GeoThinneR 包,提供了基于网格(Grid-based)和基于精度(Precision-based)的稀疏化方法,进一步提高了处理大规模数据集的效率 。

2.3 多重共线性与 VIF 分析

海洋环境因子之间往往存在极强的相关性。例如,海表温度(SST)与气温、SST 与溶解氧(由于溶解度物理特性)之间通常高度相关。在回归模型(如 GLM, GAM)中,多重共线性会导致回归系数估计不稳定,难以解析单一变量的独立贡献。

方差膨胀因子(Variance Inflation Factor, VIF)是检测共线性的标准指标。一般认为 VIF > 10(甚至 VIF > 3 在某些严格研究中)表示存在严重的共线性问题。在建模前,必须通过逐步剔除法(Stepwise procedure)移除高 VIF 的变量。R 语言中的 usdm 包是处理栅格数据共线性的利器,其 vifstep 函数可以自动化地筛选出互不相关的变量组合。

指标阈值标准含义与处理建议
VIF
< 3
共线性不显著,变量可保留。
VIF
3 - 10
存在中度共线性,需根据生态学意义谨慎取舍。
VIF
> 10
严重共线性,必须剔除。通常保留具有更直接生理机制的变量(例如保留水温,剔除纬度)。

3. 伪缺失点与背景点的选取策略

对于仅有“存在点”(Presence-only)的数据(如博物馆记录、机会主义观测、部分商业渔获数据),模型算法(特别是 MaxEnt 和 逻辑回归的变体)需要一组对比数据来代表“环境的背景特征”或“物种未出现的区域”。这组数据的选取被称为背景点(Background points)或伪缺失点(Pseudo-absences)的生成,它是 SDM 建模中最具争议也最为关键的技术环节之一 。

3.1 随机选取(Random Selection)

最简单的方法是在研究区域内随机撒点。这种方法隐含的假设是:研究区域内的任何地点被采样的概率是均等的。然而,对于渔业数据而言,这一假设几乎从未成立。如果捕捞努力量集中在近海,而我们将近海的存在点与全海域的随机背景点进行比较,模型学到的将是“离岸距离”而非“环境偏好”。研究表明,在采样偏差存在时,简单的随机背景选取会导致模型性能(AUC)显著高估,但实际预测能力极差 。

3.2 目标组背景选取法(Target-Group Background)

为了纠正采样偏差,Phillips 等人(2009)提出了“目标组背景”法,这在渔业 SDM 中被证明极为有效 。其核心逻辑是:利用使用相同采样方法(如同一类型的渔具)捕获的其他物种的出现点作为目标物种的背景点。

  • 原理解析: 假设我们研究黄鳍金枪鱼(目标物种)。我们收集了同一延绳钓船队捕获的蓝鳍金枪鱼、大眼金枪鱼、剑鱼等“非目标物种”的记录。这些记录点代表了“渔船去过且进行了捕捞作业”的地点。将黄鳍金枪鱼的存在点与这些背景点对比,实际上是在对比“有黄鳍金枪鱼的渔场”与“无黄鳍金枪鱼但有其他鱼的渔场”。由于两组数据都受到相同的捕捞努力量分布(采样偏差)的影响,这种偏差在统计上被相互抵消了,模型从而能够专注于解析环境因子的差异 。
  • 实施细节: 在 R 中使用 dismo 或 maxnet 时,可以通过通过传入目标组的坐标作为 a (absence/background) 参数来实现 。

3.3 空间缓冲与环境分层策略

另一种策略是限制背景点的选取范围。例如,仅在存在点周围的一定缓冲距离(Buffer distance)内选取背景点,或者根据环境特征进行分层采样。这种方法试图模拟物种的扩散限制,防止模型将环境适宜但由于地理隔离(如海盆阻隔)导致物种未到达的区域判别为“不适宜”。研究表明,背景点选取范围的地理跨度直接影响模型对应答曲线(Response Curves)的拟合——范围过大可能导致模型过于简化,范围过小则可能导致过拟合 。

4. 环境因子:从物理海洋学到生理生态学

SDM 的预测能力取决于环境预测变量(Predictors)的生物学相关性。在渔业中,变量的选择应基于鱼类的生理耐受限度、摄食需求和生活史特征。

4.1 关键环境因子类别

  • 热力学因子(Temperature): 海表温度(SST)是绝大多数海洋 SDM 的首选变量。它直接控制变温动物(绝大多数鱼类)的代谢速率、酶活性及生长率。对于深海或底层鱼类,海底温度(Bottom Temperature)则更为关键 。
  • 生产力因子(Productivity): 叶绿素-a 浓度(Chl-a)通常作为初级生产力的代理指标,反映了浮游植物的丰度。通过食物网的传递,它间接决定了浮游动物和饵料鱼的分布,进而影响捕食性鱼类(如金枪鱼)的分布。在建模时,考虑到能量传递的时间滞后,使用滞后 1-2 个月的 Chl-a 数据往往比同期数据效果更好 。
  • 流体动力学因子(Hydrodynamics): 海流速度(u/v 分量)、海面高度异常(SSHA)和涡动动能(EKE)。这些变量对于识别海洋锋面、涡旋边缘等物理结构至关重要。锋面往往是饵料生物聚集的“热点”,也是渔业作业的高产区 。
  • 化学因子(Chemistry): 溶解氧(Dissolved Oxygen)和盐度。随着全球变暖导致的海洋脱氧,溶解氧已成为限制高代谢需求鱼类(如长鳍金枪鱼)垂直分布和水平分布的关键因子 。
  • 地形因子(Topography): 水深(Bathymetry)、坡度(Slope)、海底粗糙度(Rugosity)。对于底栖鱼类(如岩鱼、比目鱼)和定居性物种,地形结构提供了庇护所和特定的底质环境 。

4.2 数据源推荐

  • Bio-ORACLE: 提供全球高分辨率(最高 5 arcmin)的海洋环境栅格数据,包含最大值、最小值、平均值及长期气候态数据。特别适合用于模拟底栖生物和长期气候变化研究 。
  • Copernicus Marine Service (CMEMS): 提供近实时、历史重分析(Reanalysis)以及未来预测的物理和生化海洋学产品。对于需要匹配具体日期(如通过 VMS 追踪的渔船数据)的动态 SDM,CMEMS 的日尺度或月尺度数据是必不可少的 。
  • MARSPEC: 专为海洋空间生态学设计,特别是在近岸高分辨率数据方面具有优势 。

5. 模型算法与类别:从回归到深度学习

渔业 SDM 的算法选择取决于数据类型(存在-缺失 vs 仅存在)、样本量大小以及研究目的(解释性 vs 预测性)。

5.1 广义线性模型 (GLM) 与广义加性模型 (GAM)

这是渔业科学中最传统的工具。

  • GLM: 假设物种对环境的响应符合某种参数化曲线(如二次曲线,代表生态位的中性理论)。它结构简单,易于解释,常用于早期的栖息地适宜性指数(HSI)构建 。
  • GAM: 被认为是渔业数据标准化的“瑞士军刀”。GAM通过平滑函数(Splines)拟合数据,不需要预设响应曲线的形状,能够极好地捕捉鱼类对环境非线性的复杂响应。在 CPUE 标准化中,GAM 能够有效分离空间、时间、环境和渔具效应 。

5.2 机器学习算法 (Machine Learning)

  • MaxEnt (最大熵模型): 专为仅存在(Presence-only)数据设计。它通过寻找满足约束条件下熵最大的概率分布来估计物种分布。MaxEnt 在样本量较小(如稀有物种或副渔获物种)时表现依然稳健,是目前应用最广泛的 SDM 算法之一 。
  • 随机森林 (Random Forest, RF) 与 提升回归树 (BRT): 基于决策树的集成学习方法。它们能够自动处理变量间的复杂交互作用(例如,温度对鱼类的影响可能依赖于溶解氧的水平)。RF 和 BRT 在预测准确性上通常优于回归模型,且对异常值和缺失值具有较强的鲁棒性。

5.3 时空地统计模型 (Spatio-Temporal Geostatistical Models)

这是近年来渔业评估领域的革命性进展,代表模型为 VAST (Vector Autoregressive Spatio-Temporal) 和基于 TMB (Template Model Builder) 的 sdmTMB。

传统的 SDM 往往假设样本在空间上是独立的,或者仅将经纬度作为普通变量处理。而 VAST/sdmTMB 引入了高斯随机场 (Gaussian Random Fields, GRF) 来显式建模空间自相关。

  • 核心优势: 它们能够区分“真正的丰度变化”和“分布重心的位移”。例如,当鱼群因气候变暖向北迁移时,传统模型可能误判总生物量下降,而时空模型能通过空间相关性结构捕捉到这种位移 。
  • 应用场景: 这些模型已成为美国 NOAA 和 ICES 进行多物种股票评估和标准化调查数据的标准工具 。

5.4 深度学习 (Deep Learning)

卷积神经网络 (CNN) 开始被引入 SDM 领域。与传统模型只提取“点”上的环境值不同,CNN 可以将环境数据视为图像(Tensor),从中提取纹理、边缘等空间特征(例如,识别出一个冷涡的边缘结构)。初步研究表明,CNN 在预测精度(AUC/TSS)上可与 MaxEnt 和 RF 媲美甚至更优,特别是在捕捉大尺度的海洋学特征方面。然而,其“黑箱”性质和对海量训练数据的需求限制了其在管理咨询中的即时应用 。

6. 典型研究案例分析

6.1 太平洋鲣鱼 (Skipjack Tuna) 的气候变化预测

  • 论文
  • 背景: 鲣鱼是热带太平洋最重要的商业鱼种,支撑着许多太平洋岛国(PNA 国家)的经济。
  • 研究方法: 科学家利用耦合生物物理模型(如 APECOSM-E)和基于 IPCC RCP 8.5 情景的 SDM,预测 2050 年至 2100 年的种群动态。
  • 关键发现: 模型预测鲣鱼的生物量重心将显著向东、向高纬度迁移。这意味着鱼群将从 PNA 国家的专属经济区(EEZ)通过公海向东太平洋移动。
  • 深层影响: 这一发现具有巨大的地缘政治经济意义。由于鱼群迁出 EEZ,这些岛国收取的“入渔费”将大幅减少,直接威胁国家财政安全。这促使国际社会讨论建立新的跨区域气候适应性渔业管理机制 。

6.2 欧洲鳀鱼 (European Anchovy) 的环境驱动机制

  • 论文
  • 背景: 地中海和东北大西洋的鳀鱼种群波动极大,传统的种群动力学模型难以解释其补充量(Recruitment)的变异。
  • 研究方法: 结合 Random Forest 和 GAM,整合了河流径流量、SST、上升流指数等变量。
  • 关键发现: 研究揭示了阿尔梅里亚-奥兰锋面(Almeria-Oran Front)作为生物地理屏障的作用。更重要的是,发现温度和淡水输入(带来营养盐)是驱动补充量的核心因子,其重要性在某些海域超过了直接的食物可得性。这一结果帮助管理者划分了更精细的种群管理单元,不再单一依赖捕捞限额,而是结合环境监测进行动态管理。

6.3 白令海幼年鲑鱼的时空动态对比

  • 论文
  • 背景: 理解幼年鲑鱼在白令海的分布对于预测成年回归量至关重要。
  • 研究方法: 对比了 GAM 和 VAST 两种模型框架。
  • 关键发现: 两种模型在空间预测图上呈现相似趋势,但在预测精度的细节上,VAST 由于显式包含时空相关项,提供了更精确的置信区间,并更好地捕捉了年际间的分布中心变化。研究确定了 50米等深线内的沿岸水域是高密度的关键育幼场,强调了保护近岸栖息地对维持鲑鱼种群的重要性 。

7. R 语言实现:核心包与代码实战

R 语言拥有最完善的 SDM 生态系统。以下是构建一个完整渔业 SDM 工作流所需的关键包和代码框架。

7.1 核心 R 包概览

包名主要功能适用场景
terra
栅格数据处理
替代旧的 raster 包,处理大规模环境数据,速度极快
usdm
共线性分析
计算 VIF,剔除相关变量
spThin
空间稀疏化
去除空间自相关,减少过拟合
dismo
 / maxnet
MaxEnt 接口
存在-仅有数据建模,背景点生成
biomod2
集成建模 (Ensemble)
同时运行 GLM, RF, ANN 等多种算法并取加权平均
sdmTMB
时空地统计建模
CPUE 标准化,处理时空自相关

7.2 代码实例:从环境处理到集成建模

以下代码展示了如何处理环境数据、生成目标组背景点,并使用 biomod2 进行集成建模。

步骤 1: 环境数据加载与共线性去除 (VIF)

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line# 加载必要的库library(terra)library(usdm)# 假设环境数据(.tif)存放在 data/env 目录下# 这些数据可能包括:SST_mean, Chl_mean, Bathymetry, Salinity 等env_files <- list.files(path = "./data/env", pattern = ".tif", full.names = TRUE)env_stack <- terra::rast(env_files)# 计算方差膨胀因子 (VIF)# vifstep 函数会自动迭代,剔除 VIF > 10 的变量# 这一步对于 GLM/GAM 尤为重要,对 随机森林 影响较小但仍推荐做vif_res <- usdm::vifstep(env_stack, th = 10)print(vif_res)# 排除高共线性变量env_final <- usdm::exclude(env_stack, vif_res)

步骤 2: 目标组背景点 (Target-Group Background) 的生成

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(linelibrary(sf)# 假设 df_catch 为包含所有物种捕捞记录的数据框# columns: species, lon, lat, gear_typetarget_sp <- "Thunnus_albacares" # 黄鳍金枪鱼# 1. 提取目标物种的存在点presences <- df_catch[df_catch$species == target_sp, c("lon", "lat")]presences$pa <- 1 # 标记为 1# 2. 提取背景点:使用同一渔具捕获的 *非* 目标物种# 逻辑:渔船在这些地方作业了,但没抓到黄鳍金枪鱼 -> 这是一个高质量的“缺失”信号background <- df_catch[df_catch$species!= target_sp, c("lon", "lat")]background$pa <- 0 # 标记为 0# 3. 合并数据# 注意:实际操作中可能需要对背景点进行下采样(Sub-sampling),使其数量级与存在点相当data_model <- rbind(presences, background)# 4. 提取环境值env_values <- terra::extract(env_final, data_model[, c("lon", "lat")])data_final <- cbind(data_model, env_values)

步骤 3: 使用 biomod2 进行集成建模

biomod2 是目前最强大的 SDM 框架之一,能够自动化运行多个模型并评估。

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(linelibrary(biomod2)# 1. 格式化数据myBiomodData <- BIOMOD_FormatingData(  resp.name = "Yellowfin",  resp.var = data_final$pa,  resp.xy = data_model[, c("lon", "lat")],  expl.var = env_final,  PA.nb.rep = 0 # 因为我们已经手动定义了背景点,所以设为 0)# 2. 定义模型参数 (使用默认参数或自定义)# 这里演示调用 Random Forest (RF), GLM 和 MaxEntmyBiomodOptions <- BIOMOD_ModelingOptions()# 3. 运行模型myBiomodModelOut <- BIOMOD_Modeling(  bm.format = myBiomodData,  models = c("RF", "GLM", "MAXENT.Phillips"),  CV.strategy = "random", # 交叉验证策略  CV.nb.rep = 3,          # 重复 3 次  CV.perc = 0.7,          # 70% 训练,30% 测试  metric.eval = c("TSS", "ROC"), # 使用 TSS 和 ROC (AUC) 评估  var.import = 3          # 计算变量重要性)# 4. 构建集成模型 (Ensemble Modeling)# 仅保留 TSS > 0.6 的高质量模型参与集成myBiomodEM <- BIOMOD_EnsembleModeling(  bm.mod = myBiomodModelOut,  models.chosen = 'all',  em.by = 'all',  eval.metric = c('TSS'),  eval.metric.quality.threshold = c(0.6),  prob.mean = TRUE,       # 计算平均值  prob.mean.weight = TRUE # 根据模型表现加权平均)# 5. 生成预测图myBiomodProj <- BIOMOD_Projection(  bm.mod = myBiomodModelOut,  proj.name = "Current_Prediction",  new.env = env_final,  models.chosen = 'all')# 绘制加权平均的集成预测图myBiomodEF <- BIOMOD_EnsembleForecasting(  bm.em = myBiomodEM,  bm.proj = myBiomodProj)plot(myBiomodEF)

步骤 4: 进阶 - 使用 sdmTMB 处理时空自相关

对于需要严格标准化的 CPUE 数据,sdmTMB 是更专业的选择。

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(linelibrary(sdmTMB)# 1. 创建空间网格 (Mesh)# 使用 SPDE (Stochastic Partial Differential Equation) 方法近似高斯随机场mesh <- make_mesh(data_final, xy_cols = c("lon", "lat"), cutoff = 10)# 2. 拟合时空模型# 公式:生物量密度 ~ 深度 + 年份因子 + 空间场 + 时空场fit <- sdmTMB(  density ~ s(depth) + as.factor(year),  data = data_final,  mesh = mesh,  family = tweedie(link = "log"), # Tweedie 分布适合零膨胀的连续数据(常见的渔获数据特征)  spatial = "on",       # 开启纯空间随机场  spatiotemporal = "ar1" # 开启自回归时空场 (年份间存在相关性))# 3. 检查模型收敛与残差sanity(fit)

8. 结论与未来展望

物种分布模型已从一种纯粹的生态学探索工具,演变为现代渔业管理不可或缺的基础设施。通过整合高分辨率的卫星遥感数据、复杂的机器学习算法以及严格的统计学校正方法(如 VIF 筛选、目标组背景选取),SDM 赋予了我们透视海洋生物时空动态的能力。

然而,挑战依然存在。深度学习模型(如 CNN)虽然在特征提取上表现卓越,但其对“小数据”的过拟合风险仍需警惕;三维海洋环境数据(特别是深层溶解氧和流场)的精度仍是制约底栖鱼类模拟的瓶颈。未来的发展方向将在于多源数据融合(如结合 eDNA 数据与声学数据)、实时动态管理(Dynamic Ocean Management, 如根据实时 SDM 预测实施移动禁渔区)以及全生态系统模型(不仅预测单一物种,更预测捕食者-猎物的空间重叠)的构建。

最新文章

随机文章

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