乐于分享
好东西不私藏

pdf-inspector 高级进阶实战:从单库调用到生产级智能解析管线

pdf-inspector 高级进阶实战:从单库调用到生产级智能解析管线

如果说基础篇教你“怎么用”,那么这篇进阶篇将带你深入为什么快、怎么更快、如何定制、如何集成。本文聚焦三个核心方向:生产级混合 OCR 管线的架构设计、Rust 层面的深度性能调优、以及面向特定场景的定制化扩展。


一、Fire-PDF:pdf-inspector 的终极实战模板

pdf-inspector 并非一个孤立的库——它是 Firecrawl 核心解析引擎Fire-PDF的基石。理解 Fire-PDF 的架构设计,你就掌握了 pdf-inspector 在生产环境中的最佳实践模板。

Fire-PDF 于 2026 年 4 月发布,用 Rust 重写了 Firecrawl 原有的 PDF 解析引擎,速度提升 3.5 至 5.7 倍,每页平均处理时间低于 400 毫秒。其核心架构分为五个阶段:

PDF输入    │    ▼┌─────────────────────────────────────────────────────┐│ 阶段1:分类(pdf-inspector)                          ││ → 分析PDF内部结构(字体编码、文本操作符、图像覆盖率)     ││ → 毫秒级判断每页类型:TextBased / Scanned / Mixed     │└─────────────────────────────────────────────────────┘    │    ├──► TextBased页 ──► 原生提取(跳过GPU,~150ms)    │    └──► Scanned/Mixed页 ──► 阶段2:渲染 → 阶段3:布局检测 → 阶段4:GPU处理 → 阶段5:后处理

关键洞察:Fire-PDF 将 pdf-inspector 的分类结果作为整个管线的路由决策依据。在一个典型的 150 页文字+60 页扫描的财报中,大多数页面完全不需要 GPU 处理。这正是 pdf-inspector 作为“OCR 前置过滤器”的核心价值——它在 10-50 毫秒内完成判断,直接决定了后续 60-180 秒的 GPU 处理是否需要启动。

Fire-PDF 的生产实践印证了一条原则:分类速度决定管线上限,提取精度决定输出质量。pdf-inspector 负责前者,而后者交给专用的 OCR/ML 引擎。

1.1 Fire-PDF 的混合策略核心

页面类型
处理路径
延迟
成本特征
纯文本页
pdf-inspector 原生提取
~150ms
纯 CPU,几乎零边际成本
带简单表格的文字页
pdf-inspector 表格检测
~200ms
纯 CPU,双重模式识别
扫描/图片密集页
GPU 渲染 + 神经布局模型 + GLM-OCR
2-10 秒/页
高成本,仅按需触发

在 Fire-PDF 的实际生产中,不同类型区域会获得差异化的处理策略:表格区域获得更高的 token 配额和最长达 25 秒的生成时间,公式区域以 LaTeX 形式保留,普通文本区域则使用紧凑的预算配置。

进阶要点:这种差异化处理的本质,是将 pdf-inspector 的分类结果作为触发条件,而非最终答案。你的业务管线中应该建立类似的路由逻辑:以 pdf-inspector 的输出为输入,动态决定后续处理流程。


二、高阶 API 深度运用

pdf-inspector 提供了一组超越“基础调用”的高级接口,这些接口是实现精细控制和生产级鲁棒性的关键。

2.1 区域级提取(Region Extraction)——精准控制 GPU 调用

区域级提取是 pdf-inspector 最具价值的进阶特性。其设计目标非常明确:当一个页面被判定为 Mixed 类型(同时包含文字和图像区域)时,能够只对需要 OCR 的区域进行处理,而不是整页送入 GPU。

核心原理

pdf-inspector 解析 PDF 内部结构,提取指定 bounding box 内的文本。同时,needsOcr标记会检测以下不可靠情况:

  • 提取文本为空(可能该区域只有图片)
  • 使用 GID 编码的字体(无法映射到 Unicode)
  • 编码异常或乱码
  • 字体编码无法解析

needsOcrtrue时,调用方应将该区域送入 OCR 服务。

Node.js 实现

import { classifyPdf, extractTextInRegions, PageRegions } from '@firecrawl/pdf-inspector';import { readFileSync } from 'fs';/** * 智能区域处理器:仅对需要OCR的区域调用服务 * 适用于Mixed类型PDF(如扫描文档中夹杂少量文字区域) */async function smartRegionProcessor(pdfPathstringlayoutModelOutputany[]) {    const pdfBuffer = readFileSync(pdfPath);    // 步骤1:全文档分类(确定整体策略)    const classification = classifyPdf(pdfBuffer);    console.log(`PDF类型: ${classification.pdfType}`);    console.log(`需要OCR的页面: ${classification.pagesNeedingOcr}`);    // 步骤2:如果全部文字页,直接用全页提取(不走混合管线)    if (classification.pdfType === 'TextBased') {        const fullPageRegionsPageRegions[] = [];        for (let i = 0; i < classification.pageCount; i++) {            fullPageRegions.push({                page: i,                regions: [[00612792]]  // 标准Letter/A4尺寸            });        }        const results = extractTextInRegions(pdfBuffer, fullPageRegions);        // 将全部结果拼接后返回        return results.flatMap(p => p.regions.map(r => r.text)).join('\n');    }    // 步骤3:混合型PDF — 配合布局模型结果做区域处理    // layoutModelOutput 是外部布局检测模型的输出,格式类似:    // [{ page: 0, bbox: [x1, y1, x2, y2], type: 'text' }, ...]    const regionRequestsPageRegions[] = [];    for (const pageLayout of layoutModelOutput) {        const textRegions = pageLayout.regions.filter(r => r.type === 'text');        if (textRegions.length > 0) {            regionRequests.push({                page: pageLayout.page,                regions: textRegions.map(r => r.bbox)            });        }    }    // 执行区域提取    const regionResults = extractTextInRegions(pdfBuffer, regionRequests);    // 步骤4:路由决策 — 仅将needsOcr的区域送到OCR    const ocrQueue = [];    const extractedTexts = [];    for (const pageResult of regionResults) {        for (const region of pageResult.regions) {            if (region.needsOcr) {                ocrQueue.push({                    page: pageResult.page,                    region: region,  // 坐标信息可传递给OCR服务                });                console.log(`页面 ${pageResult.page} 区域 ${JSON.stringify(region)} 需要OCR`);            } else {                extractedTexts.push(region.text);            }        }    }    // 步骤5:并行处理OCR队列(使用外部OCR服务)    // const ocrResults = await processOCRQueue(ocrQueue);    return {        extractedText: extractedTexts.join('\n'),        ocrRequiredRegions: ocrQueue,        stats: {            totalRegions: regionRequests.length,            ocrFallbackCount: ocrQueue.length        }    };}

Python 实现

import pdf_inspectorfrom typing import ListTupledef extract_with_layout_awareness(    pdf_path: str,    layout_regions: List[dict]  # 外部布局模型输出的区域列表) -> dict:    """    配合布局检测模型进行智能区域提取    Args:        pdf_path: PDF文件路径        layout_regions: 布局模型输出,格式为            [{"page": 0, "type": "text", "bbox": [x1, y1, x2, y2]}, ...]    """    # 读取PDF    with open(pdf_path, "rb"as f:        pdf_bytes = f.read()    # 先做分类决策    detection = pdf_inspector.detect_pdf_bytes(pdf_bytes)    # 纯文本PDF直接用全量处理    if detection.pdf_type == "text_based":        result = pdf_inspector.process_pdf_bytes(pdf_bytes)        return {            "markdown": result.markdown,            "ocr_needed"False,            "pages_needing_ocr": []        }    # 混合/扫描型PDF:按区域提取    # 按页面分组布局区域    page_to_regions = {}    for region in layout_regions:        page = region["page"]        bbox = region["bbox"]  # [x1, y1, x2, y2]        if page not in page_to_regions:            page_to_regions[page] = []        page_to_regions[page].append(bbox)    # 执行区域提取(需要配合PDF解析库,目前pdf_inspector Python绑定暂时不直接暴露region API,    # 可以结合detect_pdf的pages_needing_ocr结果做粗略分页处理)    #    # 核心策略:对detect_pdf检测出的pages_needing_ocr页面,送入OCR;    # 对可信文字页,用extract_text直接提取。    need_ocr_pages = set(detection.pages_needing_ocr)    results = []    for page_num in range(detection.page_count):        if page_num in need_ocr_pages:            # 该页需要OCR处理(整页或更精细区域可后续接入布局模型)            results.append({                "page": page_num,                "method""ocr",                "content"None,  # OCR结果由外部服务填充                "needs_ocr"True            })        else:            # 该页为可信文字页,直接提取            # 提取第page_num页的文本(过程需要调整,简化示例)            text = pdf_inspector.extract_text_bytes(pdf_bytes)            results.append({                "page": page_num,                "method""direct",                "content": text,                "needs_ocr"False            })    return {        "pages": results,        "ocr_pages_list": detection.pages_needing_ocr,        "confidence": detection.confidence    }

2.2 区域提取的核心价值

区域级提取解决了混合管线中的一个关键问题:如何在不渲染整个页面的情况下,只对“可能有问题”的区域进行 OCR 回退。在 Fire-PDF 的生产实现中,布局模型首先检测页面各区域的类型(表格、公式、标题、纯文本),然后仅在对应区域调用 pdf-inspector 的文本提取。只有那些needsOcrtrue的区域才会被送入 OCR 管线。

这种设计的精妙之处在于:

  • 避免全页 OCR 的浪费:一页文档中可能有大量不需要 OCR 的文本区域,区域级提取可以精准跳过
  • 给 OCR 模型更清晰的信号:OCR 服务得到的不再是整个页面的渲染图像,而是精确的 bounding box,这可以减少后处理拼接的工作
  • 保留坐标信息用于纠错:当needsOcr触发时,调用方可利用坐标信息在原 PDF 中渲染对应区域

2.3 分类置信度与路由阈值

pdf-inspector 返回的confidence字段(0.0-1.0)是实现精细路由决策的另一关键。基础篇中我们使用二分法判断pdf_type,但在生产环境中,置信度提供了更灵活的决策边界。

进阶路由策略

def smart_routing_with_confidence(pdf_path: str, ocr_service, ocr_threshold: float = 0.7):    """基于置信度的三级路由策略"""    detection = pdf_inspector.detect_pdf(pdf_path)    # 策略矩阵    if detection.pdf_type == "text_based":        if detection.confidence > 0.95:            # 高置信度纯文本:直接走本地提取,相信结果质量            return pdf_inspector.process_pdf(pdf_path)        elif detection.confidence > ocr_threshold:            # 中等置信度:提取后做质量校验            result = pdf_inspector.process_pdf(pdf_path)            if result.has_encoding_issues or len(result.markdown or "") < 100:                # 疑似有问题,降级到OCR                return ocr_service.extract(pdf_path)            return result        else:            # 低置信度但被标记为text_based:可能有字体编码问题            return ocr_service.extract(pdf_path)    elif detection.pdf_type == "mixed":        # 混合型PDF:pages_needing_ocr 给出精确路由        if len(detection.pages_needing_ocr) / detection.page_count < 0.3:            # 仅少数页需要OCR,分页处理            return process_mixed_with_ocr_fallback(pdf_path, detection.pages_needing_ocr)        else:            # 大量页需要OCR,直接整文档送入OCR            return ocr_service.extract(pdf_path)    else:  # scanned / image_based        return ocr_service.extract(pdf_path)

进阶要点:在生产系统中,confidence最低的 10%样本往往对应着最复杂的边界情况。建议建立置信度分布监控(例:每周统计一次 1000 份文档的置信度直方图),通过持续跟踪来识别需要优化解析规则的 PDF 特征(如特定字体编码、非标准版面等)。


三、Rust 层面性能调优

如果你需要在 Rust 层面深度使用 pdf-inspector(而非通过 Python/Node.js 绑定),以下优化技术直接适用。

3.1 并行批处理策略

pdf-inspector 的核心限制之一是其单文档加载设计——它本身不原生支持多文档并行处理。但lopdf解析器是线程安全的,这意味着你可以在应用层实现高效的并行批处理。

Rayon 并行优化(Rust)

use pdf_inspector::process_pdf;use rayon::prelude::*;use std::path::PathBuf;use std::sync::Arc;#[derive(Debug)]struct ProcessedDocument {    path: String,    pdf_type: String,    markdown: Option<String>,    processing_time_ms: u64,    error: Option<String>,}fnbatch_process_parallel(pdf_paths: Vec<PathBuf>) -> Vec<ProcessedDocument{    // 使用Rayon自动并行处理(利用所有CPU核心)    pdf_paths        .par_iter()        .map(|path| {            let start = std::time::Instant::now();            match process_pdf(path.to_str().unwrap()) {                Ok(result) => ProcessedDocument {                    path: path.display().to_string(),                    pdf_type: format!("{:?}", result.pdf_type),                    markdown: result.markdown,                    processing_time_ms: start.elapsed().as_millis() as u64,                    error: None,                },                Err(e) => ProcessedDocument {                    path: path.display().to_string(),                    pdf_type: "error".to_string(),                    markdown: None,                    processing_time_ms: start.elapsed().as_millis() as u64,                    error: Some(e.to_string()),                },            }        })        .collect()}

关键优化点rayonpar_iter()将工作负载均匀分配到所有可用 CPU 核心,充分利用 Rust 的无锁并发性能。在标准 8 核服务器上,这个简单的改动可以使 200 个文档的总处理时间从 4 秒进一步降低到约 0.7 秒(理论极限)——但需要注意 I/O 瓶颈,建议在 SSD 上运行。

3.2 异步流式处理

对于超大文档或实时处理场景,可以使用 Tokio 异步框架构建流式管线:

use tokio::fs::File;use tokio::io::AsyncReadExt;use pdf_inspector::process_pdf_bytes;async fn async_process_pdf(path: &str) -> Result<(), Box<dyn std::error::Error>> {    let mut file = File::open(path).await?;    let mut buffer = Vec::new();    file.read_to_end(&mut buffer).await?;    let result = tokio::task::spawn_blocking(move || {        // process_pdf_bytes会解析PDF,是CPU密集型操作        // 使用spawn_blocking将其移出异步运行时        process_pdf_bytes(&buffer)    }).await??;    println!("PDF类型: {:?}", result.pdf_type);    Ok(())}

进阶提示:使用spawn_blocking是关键——Rust 的异步运行时默认假定所有任务都是非阻塞的,但lopdf解析可能涉及繁重的内存操作,阻塞异步运行时会影响并发性能。

3.3 解析器实例复用

pdf-inspector基于lopdf设计,每个Document实例的解析是一次性的(Single Document Load)。然而在高吞吐量场景中,你可以缓存已解析的Document实例,避免重复解析同一文件:

use lopdf::Document;use std::collections::HashMap;use std::sync::RwLock;struct DocumentCache {    cache: RwLock<HashMap<StringDocument>>,}impl DocumentCache {    fn get_or_parse(&self, path: &str) -> Result<DocumentBox<dyn std::error::Error>> {        {            let read_lock = self.cache.read().unwrap();            if let Some(doc) = read_lock.get(path) {                return Ok(doc.clone());            }        }        // 缓存未命中,解析并插入        let doc = Document::load(path)?;        let mut write_lock = self.cache.write().unwrap();        write_lock.insert(path.to_string(), doc.clone());        Ok(doc)    }}

注意:文档缓存仅适用于同一文件需要多次处理的场景(例如同一个财务报表需同时生成 Markdown、JSON 和原始文本三种输出)。如果每个文件只处理一次,缓存反而增加内存开销。


四、自定义与扩展

pdf-inspector 的设计鼓励在外部进行定制化,而非侵入式修改源码。以下是三种常见的扩展模式。

4.1 基于 API 响应的后处理增强

最安全的扩展方式是在应用层进行后处理。例如,针对标题识别准确率偏低的问题,你可以结合置信度与字体信息做二次校验:

import pdf_inspectorimport redef enhanced_heading_detection(pdf_path: str):    """在pdf-inspector输出的基础上做标题二次增强"""    result = pdf_inspector.process_pdf(pdf_path)    # 1. 获取字体统计信息    items = pdf_inspector.extract_text_with_positions(pdf_path)    # 2. 计算全文档的字体大小分布    font_sizes = [item.font_size for item in items if item.font_size > 0]    if not font_sizes:        return result.markdown    avg_font_size = sum(font_sizes) / len(font_sizes)    body_font_size = sorted(font_sizes)[len(font_sizes) // 3]  # 近似正文大小    # 3. 对Markdown内容做二次后处理    # 策略:任何字体 >= body_font_size*1.2 且独立成行的文本,如果未被标记为H1-H4,手动补充标记    lines = result.markdown.split('\n')    enhanced_lines = []    for line in lines:        # 查找未被标准库标记的可能标题        # 简化实现:检测行首无#标记的短文本行        if line.strip() and not line.startswith('#'):            # 通过查找对应文本项的字体大小决定是否提升为标题            # (实际实现需要维护行号到TextItem的映射,此处为示意)            enhanced_lines.append(line)        else:            enhanced_lines.append(line)    return '\n'.join(enhanced_lines)

4.2 与 OCR 服务的深度集成

pdf-inspector 的典型生产架构是与 OCR 服务组成“智能分级管线”。以下是一个完整的集成示例:

import asyncioimport pdf_inspectorfrom typing import ListTupleclass SmartOCRClient:    """    智能OCR客户端:使用pdf-inspector做前置判断,仅在必要时调用OCR服务    """    def __init__(self, ocr_service, confidence_threshold: float = 0.7):        self.ocr_service = ocr_service        self.confidence_threshold = confidence_threshold    async def process_document(self, pdf_path: str) -> dict:        # 步骤1:快速分类(<50ms)        detection = pdf_inspector.detect_pdf(pdf_path)        # 步骤2:根据类型决定处理路径        if detection.pdf_type == "text_based" and detection.confidence > self.confidence_threshold:            # 高置信度文本型PDF:本地提取            result = pdf_inspector.process_pdf(pdf_path)            return {                "source""pdf_inspector",                "content": result.markdown,                "processing_time_ms": result.processing_time_ms,                "needs_ocr"False            }        elif detection.pdf_type == "mixed":            # 混合型:分页路由,仅将pages_needing_ocr传入OCR            tasks = []            ocr_pages = set(detection.pages_needing_ocr)            for page_num in range(detection.page_count):                if page_num in ocr_pages:                    tasks.append(self._ocr_page(pdf_path, page_num))                else:                    tasks.append(self._direct_extract_page(pdf_path, page_num))            page_results = await asyncio.gather(*tasks)            return {                "source""hybrid",                "pages": page_results,                "needs_ocr"len(ocr_pages) > 0,                "stats": {                    "total_pages": detection.page_count,                    "ocr_pages"len(ocr_pages),                    "confidence": detection.confidence                }            }        else:  # scanned / image_based / low_confidence            # 全文档OCR            ocr_result = await self.ocr_service.extract_async(pdf_path)            return {                "source""ocr_service",                "content": ocr_result.text,                "needs_ocr"True            }    async def _ocr_page(self, pdf_path: str, page_num: int):        """单页OCR"""        # 具体实现取决于OCR服务的API        return await self.ocr_service.process_page(pdf_path, page_num)    async def _direct_extract_page(self, pdf_path: str, page_num: int):        """单页直接提取"""        # 需要分页API,目前pdf_inspector已支持extract_pages_markdown        result = pdf_inspector.extract_pages_markdown(pdf_path, pages=[page_num])        return {            "page": page_num,            "content": result.pages[0].markdown,            "source""direct"        }

4.3 自定义表格检测与处理

pdf-inspector 的双重模式表格检测已经覆盖了金融报表、跨页续表和带脚注表格等常见场景。如果默认检测策略仍无法满足需求(例如某些专业排版软件生成的表格使用非标准矩形结构),可以采用以下扩展方案:

def post_process_tables(markdown_content: str) -> str:    """    对pdf-inspector输出的Markdown表格进行后处理增强    """    lines = markdown_content.split('\n')    result_lines = []    i = 0    while i < len(lines):        line = lines[i]        # 检测可能是表格分割线但未被识别的情况        # 例如:连续的 | ... | 模式        if '|' in line and line.count('|') >= 3:            # 检查下一行是否是分隔符模式(如 |---|)            if i + 1 < len(lines) and '---' in lines[i + 1]:                # 已被标准库正确识别,直接保留                result_lines.append(line)            else:                # 可能是一个误报,或者格式不规范的表格                # 可选:调用外部表格修复逻辑                result_lines.append(line)        else:            result_lines.append(line)        i += 1    return '\n'.join(result_lines)

五、生产部署清单

5.1 各语言部署策略

语言
部署方式
优势
注意事项
Node.js
预编译二进制(npm install)
零编译,开箱即用
仅支持 Linux x64 / macOS ARM64/x64
Python
maturin develop(源码编译)
灵活,与 Python 生态深度集成
需要维护 Rust 工具链,编译时间~3-5 分钟
Rust
直接从 Git 引用
最佳性能,原生并发
无版本语义,需固定 commit hash
Docker
多阶段构建
环境一致,易于扩展
需要安装 Rust 工具链和编译依赖

5.2 生产环境核心监控指标

在实际生产部署中,以下指标值得重点监控:

指标
采集方式
阈值建议
分类置信度分布
定期对 1000 份文档取confidence直方图
<0.6 的比例应低于 15%
Mixed 类型比例detect_pdf
返回pdf_type="mixed"的占比
若过高可能面临性能瓶颈
pages_needing_ocr 密度
全文档中标记需要 OCR 的页数占比
>70%时建议直接调用 OCR,跳过混合管线
提取文本质量
检测has_encoding_issues字段
若大量文档均有编码问题,需检查 PDF 来源
平均处理速度
记录processing_time_ms分布
P99 应低于 300ms

5.3 Docker 多阶段构建

# 多阶段构建:分离编译环境与运行环境,减小最终镜像体积FROM rust:1.75-slim as builder# 安装Python编译依赖(Python绑定需要)RUN apt-get update && apt-get install -y python3-dev python3-pipWORKDIR /appCOPY . .# 构建Python绑定RUN pip3 install maturin && maturin build --release --out dist# 运行时镜像FROM python:3.11-slimCOPY --from=builder /app/dist/*.whl /tmp/RUN pip install /tmp/*.whl && rm -rf /tmp/*.whlCOPY ./app.py /app/WORKDIR /appCMD ["python""app.py"]

5.4 错误处理与降级策略

生产系统中,应当为每个 PDF 处理请求设置超时和降级路径:

import signalfrom contextlib import contextmanagerclass TimeoutError(Exception):    pass@contextmanagerdef timeout(seconds: int):    """简单超时实现"""    def handler(signum, frame):        raise TimeoutError("处理超时")    original_handler = signal.signal(signal.SIGALRM, handler)    signal.alarm(seconds)    try:        yield    finally:        signal.alarm(0)        signal.signal(signal.SIGALRM, original_handler)def robust_process(pdf_path: str, ocr_fallback_service):    """带超时和降级的鲁棒处理"""    try:        with timeout(5):  # 5秒总时长限制            detection = pdf_inspector.detect_pdf(pdf_path)            if detection.pdf_type == "text_based":                return pdf_inspector.process_pdf(pdf_path)            else:                # 时间不足时直接降级到OCR                return ocr_fallback_service.extract(pdf_path)    except TimeoutError:        print(f"处理超时,降级到OCR: {pdf_path}")        return ocr_fallback_service.extract(pdf_path)    except Exception as e:        print(f"处理失败,降级到OCR: {e}")        return ocr_fallback_service.extract(pdf_path)

六、已知性能瓶颈与优化方向

6.1 当前局限

根据 opendataloader-bench 基准测试,pdf-inspector 在标题识别方面得分 0.57,低于 opendataloader 的 0.74。其主要原因是许多 PDF 使用与正文相同字体大小的粗体文本作为标题,或者标题字体仅略大于正文。

6.2 三个层面的优化方向

层面
优化策略
预期收益
实施成本
规则增强
扩展字体比率阈值,增加对粗体+居中的组合检测
标题识别提升 5-10%
低(修改 Rust 源码中 markdown 模块的字体分析逻辑)
混合模型
低置信度文本送入轻量级 BERT 模型做二次标题识别
标题识别提升 10-20%
中(需引入小规模 ML 模型)
分层架构
将 pdf-inspector 作为第一层,对 Mixed 类型页面送入 pymupdf 等辅助工具做交叉验证
整体准确率提升
低(仅增加一层调用,无需改动源码)

七、总结

pdf-inspector 的价值不在于它“取代”了 OCR,而在于它让“不调用 OCR 成为可能”。在 Fire-PDF 的生产实践中,它作为分级处理管线的第一层,实现了 3.5-5.7 倍的整体提速。进阶使用的核心在于:

  1. 分类即路由:将检测结果作为整个处理管线的决策依据,而非最终答案
  2. 区域级精准控制:在混合型 PDF 中,只对需要 OCR 的区域调用外部服务
  3. 置信度驱动策略:根据不同置信度区间设计差异化处理路径
  4. 并行与缓存:在应用层实现高吞吐量批处理

无论身在何处

有我不再孤单孤单

长按识别二维码关注我们

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