当前位置:首页>python>Python之stubmaker包语法、参数和实际应用案例

Python之stubmaker包语法、参数和实际应用案例

  • 2026-06-30 03:34:47
Python之stubmaker包语法、参数和实际应用案例

Python stubmaker 完整使用手册

一、stubmaker 概述与核心功能

1. 什么是 stubmaker

stubmaker 是 Python 官方配套的存根文件(.pyi)自动生成工具,底层封装 inspecttypingast 模块,用于为已有 Python 源码、第三方编译扩展库(C/C++/Rust 编写的 .so/.pyd)、动态模块生成类型提示存根文件(Stub File)。

区分同类工具:

  • stubgen
    :内置工具,仅支持纯 Python 源码;无法解析二进制扩展库;
  • stubmaker
    :增强版,兼容纯 Python + 编译扩展模块,自动推导函数签名、类属性、泛型、异常抛出,生成规范 .pyi 类型提示文件,适配 VSCode/PyCharm/mypy 静态类型检查。

2. 核心功能

  1. 纯Python源码批量生成存根
    :扫描文件夹/单文件,自动解析函数参数、返回值、类字段、装饰器;
  2. 二进制扩展库存根生成
    :解析 .pyd/.so 动态库、Cython 模块,弥补 stubgen 无法处理编译模块的短板;
  3. 类型自动推导
    :识别基础类型、Union、Optional、List/Dict、泛型、TypeVar;
  4. 导出完整模块结构
    :导出 __all__、常量、枚举、内置异常、类继承关系;
  5. 自定义过滤规则
    :忽略私有函数、过滤指定模块、保留/删除注释;
  6. 增量生成
    :对比旧 .pyi 文件,仅更新变更部分,不覆盖手写类型注释;
  7. mypy 兼容
    :生成符合 PEP484/PEP561 标准存根,支持静态类型校验。

二、安装方式

方式1:pip 标准安装

pip install stubmaker# 带类型检查依赖(推荐)pip install stubmaker mypy typing-extensions

方式2:源码安装(最新开发版)

git clone https://github.com/osandov/stubmaker.gitcd stubmakerpip install .

依赖要求

  • Python ≥3.7;
  • 可选依赖:mypy(类型校验)、cython(解析Cython模块)、setuptools(解析扩展库元数据)。

三、命令行语法、全局参数、子命令参数

基础命令语法

stubmaker [全局参数] 子命令 [子命令参数] 目标路径

支持两大核心子命令:generate(生成存根)、check(校验已有存根合法性)

1. 全局通用参数

参数
作用
-h/--help
全局帮助文档
-v/--verbose
输出详细日志,打印解析每个函数/类的过程
-q/--quiet
静默模式,仅输出报错
--python-exec PATH
指定解析用Python解释器(用于多版本环境)
--cache-dir DIR
设置模块解析缓存目录,加速重复生成

2. generate 子命令(核心生成命令)完整参数

stubmaker generate [OPTIONS] TARGET
参数
说明
-o/--output DIR
指定 .pyi 输出目录,默认和源码同目录
--recursive/-r
递归扫描文件夹,批量生成子模块存根
--ignore-private
跳过下划线开头私有方法/变量(_func, __attr)
--include-docstrings
将源码docstring写入存根文件
--no-types-eval
关闭运行时类型推导,仅通过AST静态解析(安全,避免执行恶意代码)
--module-filter REGEX
正则过滤模块,只生成匹配模块的存根
--exclude REGEX
排除匹配正则的文件/模块
--incremental
增量更新,不覆盖手动修改的.pyi
--force
强制覆盖所有旧存根文件
--stub-extension SUFFIX
自定义存根后缀,默认 .pyi
--add-type-imports
自动补充 typing 模块导入(Optional, List, Any等)
--skip-constants
不生成模块常量存根
--export-all
自动生成 __all__ 列表,导出所有公有对象

3. check 子命令(存根校验)参数

stubmaker check [OPTIONS] STUB_FILE
参数
作用
--strict
严格校验,类型不匹配直接报错
--mypy-config FILE
指定mypy配置文件校验存根

4. Python 代码内调用API语法(可编程生成)

stubmaker 提供编程式接口,可嵌入脚本批量自动化生成:

from stubmaker import StubGenerator, GeneratorConfig# 配置类config = GeneratorConfig(    recursive=True,    ignore_private=True,    output_dir="./stubs",    incremental=True)# 初始化生成器gen = StubGenerator(config=config)# 生成单文件gen.generate_file("mylib/main.py")# 生成整个包gen.generate_package("mylib/")# 校验存根gen.check_stub("stubs/main.pyi")

四、8个完整可运行实战应用案例

案例1:为单个纯Python文件生成基础存根

场景:给项目单文件 utils.py 生成 utils.pyi,输出到同目录,忽略私有方法。 命令行:

stubmaker generate --ignore-private utils.py

生成效果:自动提取所有公有函数、类,推导参数/返回值类型,生成标准 .pyi

案例2:递归批量为整个项目包生成存根(输出至独立stubs文件夹)

场景:项目包名 myproject/,递归扫描所有子模块,存根统一输出到 ./stubs,增量更新。

stubmaker generate -r -o ./stubs --incremental --export-all myproject/

代码API版本:

from stubmaker import StubGenerator, GeneratorConfigcfg = GeneratorConfig(recursive=True, output_dir="./stubs", incremental=True, export_all=True)gen = StubGenerator(cfg)gen.generate_package("./myproject")

案例3:解析Cython编译扩展.pyd二进制模块生成存根

场景:第三方Cython库 fastcalc.pyd,stubgen无法解析,使用stubmaker运行时解析二进制导出符号。

stubmaker generate --python-exec python3 fastcalc.pyd -o ./stubs

关键:不加 --no-types-eval,必须运行加载模块读取运行时签名。

案例4:过滤指定模块、排除测试文件

场景:项目过滤 core.* 模块,排除所有 test_*.py 文件,不生成测试存根。

stubmaker generate -r --module-filter "^core\." --exclude "test_.*" src/

案例5:生成带文档注释、完整类型导入的标准化存根

场景:生成可发布给第三方的规范存根,保留docstring、自动补全typing导入。

stubmaker generate --include-docstrings --add-type-imports --force src/api.py -o dist/stubs

案例6:安全静态解析(禁止执行源码,防恶意代码)

场景:解析外部不可信第三方源码,关闭运行时类型求值,仅用AST静态分析。

stubmaker generate --no-types-eval untrusted_lib.py

限制:无法解析动态赋值类型、二进制扩展库,仅纯静态语法树解析。

案例7:自动化脚本打包时生成存根(setup.py集成)

场景:打包发布Python库时,自动构建stubs并打包进分发包。build_stubs.py 脚本:

from stubmaker import StubGenerator, GeneratorConfigimport osdef build_package_stubs():    cfg = GeneratorConfig(        recursive=True,        output_dir="./build/stubs",        ignore_private=True,        export_all=True    )    gen = StubGenerator(cfg)    gen.generate_package("./mypackage")    print("存根生成完成,路径:", os.path.abspath("./build/stubs"))if __name__ == "__main__":    build_package_stubs()

执行:python build_stubs.py,配合 setup.py 的 cmdclass 自动构建。

案例8:校验已手写存根与源码类型一致性

场景:手动修改过 .pyi,校验是否和源码函数签名、类型匹配,严格模式报错阻断发布。

stubmaker check --strict stubs/core.pyi --mypy-config mypy.ini

脚本API校验:

from stubmaker import StubGenerator, GeneratorConfiggen = StubGenerator(GeneratorConfig())result = gen.check_stub("./stubs/core.pyi", strict=True)if not result.success:    raise SystemExit("存根与源码类型不匹配")

五、常见错误、报错原因与解决方案

错误1:ModuleNotFoundError: No module named ‘stubmaker’

  • 原因:未安装包、pip环境与运行Python解释器不匹配;
  • 解决:
# 确认当前pip绑定当前pythonpython -m pip install stubmaker

错误2:Failed to load module xxx.pyd / segmentation fault when parsing extension

  • 原因1:Python版本与编译扩展库版本不兼容(32/64位、3.8 vs 3.10);
  • 原因2:扩展库依赖系统动态库缺失(Windows缺少VC++运行库、Linux缺少glibc);
  • 解决:使用对应版本解释器 --python-exec,安装系统依赖,或切换静态解析 --no-types-eval(仅纯py文件)。

错误3:Type evaluation disabled, cannot process binary module

  • 原因:使用 --no-types-eval 参数同时解析 .pyd/.so 扩展;静态AST无法读取二进制导出符号;
  • 解决:移除 --no-types-eval,允许运行时加载模块解析。

错误4:Stub file not updated with --incremental but source changed

  • 原因:增量模式会跳过手动修改过的 .pyi 文件,不会覆盖手写代码;
  • 解决:需要全量更新时加 --force 参数强制覆盖。

错误5:SyntaxError in generated .pyi, invalid type annotation

  • 原因1:源码存在动态复杂类型(动态生成类、元编程),自动推导出错;
  • 原因2:旧Python版本不支持PEP604 | 联合类型;
  • 解决:手动修正对应存根,或添加 --skip-constants 过滤动态常量,升级Python到3.10+。

错误6:Recursive scan not working, subfolder stubs missing

  • 原因:忘记加 -r/--recursive 参数,仅处理顶层文件;
  • 解决:命令行追加 -r,API配置 recursive=True

错误7:ImportError: cannot import name ‘StubGenerator’ from ‘stubmaker’

  • 原因:stubmaker版本过低,早期版本无编程API;
  • 解决:升级到最新版 pip install --upgrade stubmaker

错误8:Mypy check reports “Missing type annotation” in generated stubs

  • 原因:源码无类型注解,stubmaker自动推导为 Any
  • 解决:源码补充基础类型注解,或生成时手动修改存根,添加显式类型。

六、使用注意事项

1. 安全风险

  • 默认模式会导入目标模块执行代码以获取运行时类型,不要用默认参数解析未知/恶意第三方代码;处理不信任源码必须加 --no-types-eval
  • 解析二进制扩展库会加载本地动态库,存在崩溃风险,建议隔离虚拟环境操作。

2. 类型推导局限性

  • 高度元编程、动态创建函数/类、工厂模式无法100%精准推导,生成后需人工校对;
  • 运行时动态修改的属性、 monkey patch 不会出现在存根中;
  • 复杂泛型、自定义TypeVar可能推导为Any,需手动修正。

3. 项目工程规范

  • 生产项目建议将 .pyi 存根统一放入独立 stubs/ 目录,不要和源码混杂;
  • 发布开源库时,将生成的 .pyi 打包分发,搭配 py.typed 文件(PEP561)告知类型检查器存在存根;
  • 版本迭代时使用 --incremental 保护手写的精细类型注释。

4. 性能优化

  • 开启 --cache-dir 缓存模块解析信息,多次生成大幅提速;
  • 大型项目配合 --exclude 过滤测试、第三方依赖、文档目录,减少扫描耗时。

5. 编辑器兼容

  • VSCode/PyCharm识别 .pyi 需确保输出目录加入 sys.path
  • 若IDE不读取生成存根,在项目根目录创建 py.typed 空文件。

6. 版本兼容提醒

  • Python3.7及以下不支持 | 联合类型,生成存根会使用 Union[] 兼容写法;
  • 低于0.10版本的stubmaker不支持递归批量生成,建议升级至0.12+稳定版。

《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章,前6章涵盖深度学习基础,包括张量运算、神经网络原理、数据预处理及卷积神经网络等;后5章进阶探讨图像、文本、音频建模技术,并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法,每章附有动手练习题,帮助读者巩固实战能力。内容兼顾数学原理与工程实现,适配PyTorch框架最新技术发展趋势。

最新文章

随机文章

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