乐于分享
好东西不私藏

pdf-inspector 最佳实践实战指南:从选型决策到生产级部署

pdf-inspector 最佳实践实战指南:从选型决策到生产级部署

pdf-inspector 的价值不在于它“取代”了 OCR,而在于它让 “不调用 OCR 成为可能” 。本文旨在提供一个从选型评估、集成落地到生产运维的完整实践框架,帮助你在真实业务场景中最大化 pdf-inspector 的效用。


一、选型与决策框架

在决定引入 pdf-inspector 之前,首先需要评估它是否适合你的场景。

1.1 核心指标:pdf-inspector 适合什么场景?

场景
适用性
理由
文本型 PDF 占主体的 RAG 数据清洗
✅ 高度适用
综合得分 0.78,文本提取和阅读顺序表现优异
金融财报、学术论文等多栏+表格文档
✅ 适用
表格检测得分 0.59,为直接文本提取工具中最高
混合型 PDF(文字+扫描页)
✅ 适用
可结合 pages_needing_ocr 精确定位需要 OCR 的页面
纯扫描/图片型 PDF
⚠️ 需配合 OCR
检测为 Scanned/ImageBased 后应降级到 OCR 服务
标题识别高度敏感的场景
⚠️ 需增强
标题识别得分 0.57,低于 opendataloader 的 0.74,可能需要二次处理
实时/高吞吐流式处理
✅ 适用
单文档~200ms,可并行处理
数据隐私/离线环境
✅ 高度适用
纯 Rust 实现,无 ML 模型,无外部 API 调用

pdf-inspector 的分类器通过分析 PDF 内部结构——字体编码、文本操作符、图像覆盖率——在毫秒级判断 PDF 类型。

核心理解:pdf-inspector 不是“什么都能做”的全能工具,而是在性能与准确率之间精准权衡后的最佳性价比选择。对于追求极致准确率的场景,需要与 OCR/ML 引擎组合使用。

1.2 对比评估:pdf-inspector vs 主流 PDF 解析工具

了解 pdf-inspector 在工具图谱中的位置,有助于做出更明智的选型决策。

维度一:性能基准(opendataloader-bench,200 个 PDF)

引擎
综合得分
阅读顺序
表格检测
标题识别
总耗时
pdf-inspector0.780.870.59
0.57
4 秒
opendataloader
0.84
0.91
0.49
0.74
11 秒
pymupdf4llm
0.73
0.89
0.40
0.41
18 秒
markitdown
0.58
0.88
0.00
0.00
8 秒

维度二:与 OCR/ML 引擎的差异(200 个 PDF)

引擎类型
综合得分
处理耗时
GPU/ML 依赖
适用场景
pdf-inspector(本地)
0.78
4 秒
文本型/混合型为主
docling(OCR/ML)
0.83-0.88
2-180 分钟
扫描件/复杂排版
marker(OCR/ML)
0.83-0.88
2-180 分钟
扫描件/复杂排版
mineru(OCR/ML)
0.83-0.88
2-180 分钟
扫描件/复杂排版

决策原则:如果用 pdf-inspector 不能处理的 PDF 占比超过 30%,建议考虑升级到 OCR/ML 方案,或将 pdf-inspector 作为前置过滤层,以较低成本过滤掉 70% 的可直接处理文档,再将剩余 30% 的复杂文档送入 OCR 服务。

1.3 语言选型决策矩阵

决策因子
Node.js
Python
Rust
部署便捷性
⭐⭐⭐(预编译二进制)
⭐⭐(需编译 Rust)
⭐⭐(需 Rust 环境)
生态集成能力
⭐⭐
⭐⭐⭐
⭐⭐
极限性能
⭐⭐⭐
⭐⭐
⭐⭐⭐
维护成本
⭐⭐⭐
⭐⭐
⭐⭐
推荐场景
快速原型、Web 服务
数据科学、ML 管线
批处理、边缘计算

二、核心最佳实践

2.1 分类即路由

分类器是 pdf-inspector 的入口,也是整个解析管线的决策核心。

def smart_routing(pdf_path: str):    # 分类阶段(<50ms)    detection = pdf_inspector.detect_pdf(pdf_path)    # 路由决策矩阵    if detection.pdf_type == "text_based":        # 可信文字页直接提取        return pdf_inspector.process_pdf(pdf_path)    elif detection.pdf_type == "mixed":        # 混合页:仅将pages_needing_ocr送入OCR        ocr_pages = set(detection.pages_needing_ocr)        results = {}        for page_num in range(detection.page_count):            if page_num in ocr_pages:                results[page_num] = call_ocr_service(pdf_path, page_num)            else:                results[page_num] = pdf_inspector.extract_page(pdf_path, page_num)        return results    else:        # 整文档OCR        return call_ocr_service(pdf_path)

最佳实践:将 pdf-inspector 的检测结果作为生产链路的第一层过滤,而非最终答案。

2.2 置信度驱动的分级策略

confidence 字段提供 0.0-1.0 的评分,支持更精细的决策逻辑:

置信度区间
pdf_type='text_based'
pdf_type='mixed'
建议动作
0.95+
✅ 可直接信任
⚠️ 仅 OCR 少数页
本地提取为主
0.70-0.95
⚠️ 建议质量校验
🔶 需校验后决定
提取后抽样抽查
0.50-0.70
🔶 建议抽样校验
❌ 建议降级到 OCR
混合处理+质量门禁
<0.50
❌ 建议降级到 OCR
❌ 建议降级到 OCR
完全降级
def confidence_aware_processor(pdf_path: str, 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 > threshold:            # 中等置信度:提取后校验            result = pdf_inspector.process_pdf(pdf_path)            if len(result.markdown or "") < 100 or result.has_encoding_issues:                return call_ocr_service(pdf_path)            return result        else:            # 低置信度但被标记为text_based:可能字体编码有问题            return call_ocr_service(pdf_path)    else:        return call_ocr_service(pdf_path)

三、实践场景与代码模式

场景 1:RAG(检索增强生成)数据清洗

在 RAG 场景中,PDF 的解析质量直接影响检索效果。

def rag_pdf_pipeline(pdf_path: str):    """RAG数据清洗流程"""    # 1. 先分类,确定处理路径    detection = pdf_inspector.detect_pdf(pdf_path)    if detection.pdf_type == "text_based" and detection.confidence > 0.8:        # 2a. 文字PDF:直接提取Markdown(保留结构)        result = pdf_inspector.process_pdf(pdf_path)        # 3a. 后处理:去噪、分块        cleaned = postprocess_for_rag(result.markdown)        return cleaned    elif detection.pdf_type == "mixed":        # 2b. 混合PDF:分页处理        ocr_pages = set(detection.pages_needing_ocr)        all_content = []        for page_num in range(detection.page_count):            if page_num in ocr_pages:                # 需要OCR的页面送入服务                content = call_ocr_service(pdf_path, page_num)            else:                content = pdf_inspector.extract_page_markdown(pdf_path, page_num)            all_content.append(content)        # 3b. 合并后处理        return postprocess_for_rag("\n".join(all_content))    else:  # scanned/image_based/low_confidence        # 2c. 扫描件:直接送OCR        return call_full_ocr_service(pdf_path)def postprocess_for_rag(markdown: str) -> str:    """RAG后处理:去噪、规范化、分块标记"""    # 移除空行过多、合并被截断的行    # 添加文档级别元信息    # 可选:按语义段落分块并标记块ID    return markdown

RAG 场景关键点

  • 保留 Markdown 结构(标题、列表、表格)有助于检索时语义理解
  • 表格检测(0.59 分)在金融财报等场景中尤为关键
  • 对于混合型文档,仅 OCR 必要的页面,降低处理成本

场景 2:混合型 PDF 处理

混合型 PDF(如“150 页文字+60 页扫描件的财报”)是最能体现 pdf-inspector 价值的场景。

async def hybrid_pdf_pipeline(pdf_path: str):    """混合型PDF:分级处理"""    detection = pdf_inspector.detect_pdf(pdf_path)    if detection.pdf_type != "mixed":        raise ValueError("非混合型文档,请使用对应处理流程")    ocr_pages = set(detection.pages_needing_ocr)    text_pages = [p for p in range(detection.page_count) if p not in ocr_pages]    # 并行处理:文字页批量用pdf-inspector,扫描页异步送OCR    with ThreadPoolExecutor() as executor:        # 批量本地提取        text_future = executor.submit(            pdf_inspector.extract_pages_markdown,            pdf_path,            pages=text_pages        )        # 单页OCR(并行提交)        ocr_futures = [            executor.submit(call_ocr_service, pdf_path, page)            for page in ocr_pages        ]        text_result = text_future.result()        ocr_results = [f.result() for f in ocr_futures]    # 按页码合并    return merge_by_page_order(text_result.pages + ocr_results)

在 Fire-PDF 中,这种混合策略使整体处理速度提升了 3.5 到 5.7 倍。

关键指标监控

指标
说明
阈值建议
mixed
类型占比
混合型 PDF 占总处理量的比例
>50% 需评估 OCR 服务容量
pages_needing_ocr
密度
混合型中需 OCR 的页数占比
>70% 建议整文档送 OCR
OCR 触发率
实际触发 OCR 的请求比例
正常应在 20-40%区间

场景 3:实时流式处理

对于大文档或实时交互场景,流式输出比一次性等待更合适。

def stream_pdf_to_markdown(pdf_path: str, chunk_size: int = 10):    """分批解析大PDF,流式输出"""    total_pages = pdf_inspector.get_page_count(pdf_path)    for start_page in range(0, total_pages, chunk_size):        end_page = min(start_page + chunk_size, total_pages)        pages = list(range(start_page, end_page))        # 分页提取        result = pdf_inspector.extract_pages_markdown(pdf_path, pages=pages)        for page_result in result.pages:            if page_result.needs_ocr:                # 触发异步OCR,不阻塞                asyncio.create_task(ocr_queue.put((pdf_path, page_result.page)))                yield f"[提示:第{page_result.page+1}页需要OCR处理]\n"            else:                yield page_result.markdown

场景 4:高吞吐量批处理(Rust 原生)

Rust 原生 API 提供极限性能,适合大规模批处理。

use pdf_inspector::process_pdf;use rayon::prelude::*;fnbatch_process(pdf_paths: Vec<&str>) -> Vec<ProcessedDocument{    pdf_paths        .par_iter()        .map(|path| {            let start = std::time::Instant::now();            match process_pdf(path) {                Ok(result) => ProcessedDocument {                    path: path.to_string(),                    pdf_type: format!("{:?}", result.pdf_type),                    markdown: result.markdown,                    processing_time_ms: start.elapsed().as_millis() as u64,                },                Err(e) => ProcessedDocument {                    path: path.to_string(),                    pdf_type: "error".to_string(),                    markdown: None,                    processing_time_ms: start.elapsed().as_millis() as u64,                }            }        })        .collect()}

场景 5:边缘计算与离线环境

pdf-inspector 的纯 Rust 实现使其特别适合边缘计算和离线场景。

轻量化部署方案

// CLI单文件快速处理(适合边缘设备)// 编译后单二进制文件,零依赖// cargo build --release// ./pdf2md document.pdffn edge_pipeline(pdf_path: &str) -> Result<StringBox<dyn Error>> {    let result = pdf_inspector::process_pdf(pdf_path)?;    if result.pdf_type == PdfType::TextBased && result.confidence > 0.9 {        Ok(result.markdown.unwrap_or_default())    } else {        // 离线场景下,可能需要返回错误并提示人工介入        Err("扫描型PDF,需要人工处理".into())    }}

四、性能优化

4.1 内存与 CPU 优化

策略
说明
预期收益
process_pdf_bytes 优先
直接从内存字节处理,减少 I/O
+20-30%
extract_pages_markdown 分批
超大 PDF 分页处理,避免一次性加载全部
内存降低 50%+
Rayon 并行
Rust 原生 API 配合 rayon 多线程
8 核机器理论提升 5-7 倍
文档缓存
同一文件多次处理时缓存 Document 实例
减少重复解析

注意:在并行处理大量文档时,建议设置并发上限(如 CPU 核心数 ×2),避免 I/O 成为瓶颈。

4.2 超时与降级策略

生产环境必须设置超时和降级路径:

@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 resilient_pdf_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:                return ocr_fallback_service.extract(pdf_path)    except TimeoutError:        # 超时降级        return ocr_fallback_service.extract(pdf_path)    except Exception as e:        return {            "status""error",            "message"str(e),            "fallback": ocr_fallback_service.extract(pdf_path)        }

五、生产部署与运维

5.1 各语言部署方式对比

语言
部署方式
命令
适用场景
Node.js
npm 预编译二进制
npm install @firecrawl/pdf-inspector
Web 服务、快速集成
Python
maturin 源码构建
maturin develop --release
数据科学、ML 管线
Rust
Git 引用
pdf-inspector = { git = "..." }
高性能批处理
CLI
源码编译
cargo build --bin pdf2md --release
脚本集成、快速测试
Docker
多阶段构建
docker build -t pdf-inspector .
环境标准化、扩展部署

对于 Python 部署,推荐使用 manylinux Docker 镜像或 PyO3/maturin-action GitHub Action 来简化构建流程。

5.2 监控指标体系

在生产环境中,以下指标值得重点关注:

指标类别
具体指标
采集方式
阈值建议
处理性能
平均 processing_time_ms
日志记录
P95 < 300ms
分类质量
confidence 分布直方图
定期采样
<0.6 占比应低于 15%
路由决策
Mixed 类型占比
统计 API 返回
>40%需评估
降级率
OCR 触发比例
业务埋点
正常 20-40%
错误率
解析失败占比
异常捕获
<2%
吞吐量
每小时处理文档数
系统监控
根据硬件调整

5.3 错误处理矩阵

错误类型
触发条件
处理策略
重试建议
文件损坏/无效 PDF
lopdf 解析失败
降级到 OCR 或返回错误
不重试
内存溢出
超大/复杂 PDF
降级到 OCR(分页处理)
重试 1 次,分页模式
超时
处理超过 5 秒
降级到 OCR
重试 1 次
字体编码异常
PDF 使用未知 CID 编码
标记 needs_ocr=True
降级处理
分类器置信度过低
confidence<0.5
直接降级到 OCR
不重试

5.4 容量规划

基于 pdf-inspector 的性能特征(单文档~200ms,4 秒/200 文档),容量规划参考:

QPS
需要的 CPU 核心数(保守)
每日处理上限(保守)
备注
10
2-4 核
~86 万份
适合中小规模
50
8-16 核
~432 万份
适合中等规模
100
16-24 核
~864 万份
适合大规模(建议并行+缓存在线)

常见误区提醒:注意区分“检测耗时(<50ms)”和“完整处理耗时(~200ms)”。如果 QPS 较高且仅需分类而不提取全文,可只调用detect_pdf避免额外开销。


六、故障排查与调试

6.1 常见问题排查

症状
可能原因
排查步骤
解决方案
处理后 Markdown 内容为空
扫描型 PDF 被误判为文本型
检查 detection.pdf_type 和 confidence
调整置信度阈值,降级到 OCR
标题未被正确识别
PDF 标题字体大小与正文接近
打印 TextItem.font_size 查看字体分布
应用中二次处理,提升标题
表格结构混乱
无边框表格未被启发式检测识别
检查表格区域矩形覆盖情况
调整对齐检测参数或降级到 OCR
阅读顺序错误
复杂多栏布局检测失败
检查实际栏结构和阅读顺序输出
考虑升级到 ML 布局模型
中文乱码
字体编码未正确解析
检查是否支持对应编码
对乱码区域标记 needs_ocr

6.2 调试工具链

# 1. 分类器诊断(查看每页类型和置信度)cargo run --bin detect-pdf -- document.pdf --json# 2. 位置感知提取(查看字体和坐标信息)python -c "import pdf_inspectoritems = pdf_inspector.extract_text_with_positions('document.pdf')for item in items[:20]:    print(f'{item.text}: font={item.font} size={item.font_size} bold={item.is_bold}')"# 3. 字体编码分析(识别乱码来源)# 查看lopdf文档中的字体字典,确认ToUnicode CMap是否正确映射

七、成功案例参考

Fire-PDF:3.5-5.7 倍提速的生产级集成

Firecrawl 团队将 pdf-inspector 作为 Fire-PDF 引擎的核心组件,构建了五阶段解析管线:

PDF输入 → 分类(pdf-inspector, <50ms)    ├── TextBased页 → 直接提取(~150ms,跳过GPU)    └── Scanned/Mixed → 渲染 → 布局检测 → GLM-OCR处理

在具体应用中,一份 150 页文字加 60 页扫描件的财报,绝大多数页面完全不需要 GPU 处理,整体速度提升 3.5 至 5.7 倍。

成功要素提炼

  1. 分类前置:先判断 PDF 类型,再决定处理路径
  2. 差异化的处理策略:表格区域获得更高的 token 配额和最长 25 秒的生成时间,公式区域以 LaTeX 形式保留,普通文本区域使用紧凑预算配置
  3. 监控闭环:持续追踪置信度分布,持续优化规则

八、最佳实践总结

核心原则

原则
说明
行动建议
分类即路由
检测结果决定整个解析路径
建立基于 confidence 的决策矩阵
置信度驱动
confidence 是精细决策的关键
定期监控置信度分布
区域级精准控制
在混合型 PDF 中只对需要 OCR 的区域调用外部服务
配合布局检测模型实现智能调度
分级降级
建立完整的错误恢复机制
超时、异常、低置信度三种降级路径

pdf-inspector 适用性与禁用场景速查表

场景特征
推荐方案
不推荐原因 / 替代方案
纯文本 PDF + RAG
✅ pdf-inspector
混合型 PDF(文字+扫描)
✅ pdf-inspector + OCR 服务
纯扫描件批量
❌ 纯 pdf-inspector(降级到 OCR)
应直接使用完整 OCR 管线
需要精准标题识别
⚠️ pdf-inspector + 二次增强
标题识别准确率 0.57,需结合规则增强或升级到 ML 引擎
实时交互、低延迟
✅ pdf-inspector + 流式输出
高隐私要求、完全离线
✅ pdf-inspector(单独或配合本地 OCR)
简单快速原型验证
✅ pdf-inspector(Node.js 预编译二进制)
科学/专利文档(复杂图文混排)
⚠️ 建议评测
多数文本解析工具在此类文档上均有挑战
极限准确性要求(99%+准确率)
⚠️ 建议升级到 OCR/ML 引擎(docling/marker/mineru)
pdf-inspector 基准综合得分 0.78,ML 引擎可达 0.83-0.88

最终建议

将 pdf-inspector 视为智能 PDF 解析管线的前置过滤器,而非万能解析器。它能以极低的成本(毫秒级、纯 CPU)识别出大量可以直接提取的文本型 PDF,为剩余需要 OCR 的文档留出更多计算资源。这正是 Fire-PDF 所代表的——将最快的分类器与最强的 OCR 模型结合起来,创造出一个既快又准的整体解决方案。

一个健康的生产解析管线应当满足

  • pdf-inspector 处理的文档占比 ~60-80%(具体取决于文档源)
  • OCR 触发的文档占比 ~20-40%
  • 错误率 <2%
  • P95 处理延迟 <300ms

通过遵循以上最佳实践,你可以在几乎不增加延迟和成本的情况下,显著提升 PDF 解析管线的整体效率与鲁棒性。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-31 17:22:07 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/688400.html
  2. 运行时间 : 0.220553s [ 吞吐率:4.53req/s ] 内存消耗:4,661.56kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=5ec3fb5561633a13a1ee75e674074a2e
  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.001543s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.002144s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000849s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000769s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.002063s ]
  6. SELECT * FROM `set` [ RunTime:0.000655s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.002188s ]
  8. SELECT * FROM `article` WHERE `id` = 688400 LIMIT 1 [ RunTime:0.001412s ]
  9. UPDATE `article` SET `lasttime` = 1780219327 WHERE `id` = 688400 [ RunTime:0.003105s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000717s ]
  11. SELECT * FROM `article` WHERE `id` < 688400 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001385s ]
  12. SELECT * FROM `article` WHERE `id` > 688400 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001136s ]
  13. SELECT * FROM `article` WHERE `id` < 688400 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002018s ]
  14. SELECT * FROM `article` WHERE `id` < 688400 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002966s ]
  15. SELECT * FROM `article` WHERE `id` < 688400 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004407s ]
0.227201s