当前位置:首页>python>print大法救不了你!Python 3.14安全调试接口:给生产环境装了个"透视眼"

print大法救不了你!Python 3.14安全调试接口:给生产环境装了个"透视眼"

  • 2026-07-01 00:49:19
print大法救不了你!Python 3.14安全调试接口:给生产环境装了个"透视眼"
生产环境调试的"终极武器":Python 3.14安全调试接口来了
凌晨三点,你的手机疯狂震动——生产环境的支付接口在偶发性超时,每分钟丢掉几十笔交易。你赶紧加了一行print("到这了!"),重新部署……奇迹发生了,bug 消失得比你的发际线还快。删掉 print,bug 又回来了。你盯着屏幕,怀疑人生:这代码是不是成精了?
如果你经历过这种"薛定谔的 bug",那你一定能理解生产环境调试的痛苦。好消息是,Python 3.14 带来了一个真正的游戏规则改变者——PEP 768:安全的外部调试器接口。今天咱们就来聊聊,这个特性为什么堪称生产环境调试的"终极武器"。

一、传统调试手段:三件套的尴尬

遇到生产环境的 bug,大多数人的第一反应是三板斧:

1. print 大法

问题?生产环境加 print = 重新部署 = bug 可能消失(海森堡 bug),还可能泄露敏感信息。更别提 print 输出被日志系统吞掉、缓冲区延迟等各种幺蛾子。

2. logging 升级版

比 print 好一点,但本质没变——你只能看到你"预想到"要记录的信息。真正的 bug 往往藏在你看不到的地方。

3. 重启 + 本地调试

"我把代码拉下来本地跑一遍不就完事了?"
然而现实是:本地环境没有生产的数据量、没有真实的网络延迟、没有并发竞争条件。本地跑一万遍都是好的,上生产就炸。这不是调试,这是玄学。

二、py-spy 和 pydevd:英雄但有限

在 PEP 768 之前,也不是完全没有外部调试工具。
py-spy是最受欢迎的选择——无需修改代码,直接 attach 到运行中的进程:
实时查看调用栈py-spy dump --pid 12345# 生成性能火焰图py-spy record --pid 12345 -o flamegraph.svg
py-spy 的工作原理是读取进程内存,通过解析 CPython 内部数据结构来重建调用栈。听起来很酷,但它有致命局限:
只能看,不能动:只能读取调用栈,不能设置断点、不能单步执行、不能检查变量值
依赖内部实现:依赖 CPython 的内存布局,版本一变就可能挂掉
偶尔读出乱码:在 GIL 切换的间隙读取,可能拿到不一致的状态
pydevd(PyCharm 的调试后端)功能更强,能设断点、查变量,但它需要启动时注入,不支持 attach 到已在运行的进程。生产环境跑着的那个出问题的进程?不好意思,得重启才能调试。
重启生产环境来调试?这跟"为了治病先杀死病人"有什么区别?

三、PEP 768 设计哲学:零开销的安全门

PEP 768 的核心设计理念可以用一句话概括:无调试器时零开销,有调试器时安全可控
这是怎么做到的?关键在于 CPython 解释器层面引入了一套"安全审计钩子"机制:
无调试器挂载时:解释器不执行任何额外操作,性能损耗为零。不是"几乎为零",是真的零——连条件判断的开销都没有
调试器挂载时:通过安全握手协议建立连接,解释器暴露受控的调试接口
PEP 768 的核心概念示意import sys# 检查是否有安全调试器已挂载if sys.is_debugger_attached():    print("有调试器连接,解释器已进入调试模式")else:    print("无调试器,零开销运行中")
这就像给房子装了一扇智能门——没人的时候门不存在(不占空间、不影响通行),有人要进来的时候门才会出现,而且还需要刷门禁卡。

四、安全模型:不是谁都能"进门"

生产环境最怕什么?不是 debug 不出来,而是 debug 的时候把系统搞崩了。PEP 768 的安全模型围绕三个核心原则设计:

1. 显式选择加入(Opt-in)

调试接口不会自动暴露。Python 进程必须主动声明接受外部调试器连接:
启动时声明允许外部调试import syssys.enable_external_debugging(    auth_token="my-secret-token-2024",  # 认证令牌    permissions=["read_stack""read_vars""set_breakpoint"]  # 权限白名单)
没有这行代码,外部调试器根本连不上。不是"连上但被拒",是"连接点都不存在"。

2. 权限精细控制

不是所有调试器都能做所有事。权限模型支持细粒度控制:
sys.enable_external_debugging(    auth_token="prod-debug-token",    permissions=[        "read_stack",       读取调用栈        "read_vars",        # 读取变量值        # "set_breakpoint", # 慎用!设断点会暂停执行        # "eval_expr",      # 慎用!可执行任意表达式    ])
只开read_stack和read_vars?那调试器只能"看",不能"停"。对生产环境来说,这种只读调试模式简直是梦寐以求。

3. 身份认证

每个调试器连接都需要提供正确的auth_token:
调试器端from debugger_client import attachdebugger = attach(    pid=12345,    auth_token="my-secret-token-2024"  # 必须与服务端一致)
token 不对?连接直接拒绝。生产环境不用担心随便一个开发就能 attach 上去。

五、实战:如何使用新的调试接口

让我们看一个完整的生产环境调试场景:
服务端配置(你的 Python 应用):
app.py - 生产环境应用import osimport sysfrom flask import Flaskapp = Flask(name)# 在生产环境中启用安全调试(通过环境变量控制)if os.environ.get("ENABLE_SAFE_DEBUG") == "1":    sys.enable_external_debugging(        auth_token=os.environ["DEBUG_AUTH_TOKEN"],        permissions=["read_stack""read_vars""set_breakpoint"]    )@app.route("/pay", methods=["POST"])def process_payment():    # 这个接口偶发超时,需要调试    order = request.json    # ... 业务逻辑    return {"status""ok"}
调试器端(开发者机器):
debug_session.py - 开发者本地执行from debugger_client import attach# 连接到生产进程debugger = attach(    pid=12345,  # 生产进程 PID    auth_token="prod-debug-token-abc123")# 查看当前所有线程的调用栈stacks = debugger.get_all_stacks()for thread_id, stack in stacks.items():    print(f"Thread {thread_id}:")    for frame in stack:        print(f"  {frame.filename}:{frame.lineno} in {frame.function}")# 在目标函数设断点debugger.set_breakpoint("app.py"18)  # process_payment 函数内# 读取特定变量的值value = debugger.read_variable("order")print(f"当前 order: {value}")# 完成调试后断开debugger.detach()
启动生产服务:
通过环境变量控制,不修改代码ENABLE_SAFE_DEBUG=1 DEBUG_AUTH_TOKEN=prod-debug-token-abc123 python app.py
整个过程:不重启服务、不改业务代码、安全可控。这就是"终极武器"的含金量。

六、IDE 集成:VS Code 和 PyCharm

PEP 768 最大的意义不仅是提供底层接口,更是让主流 IDE 能原生支持生产环境安全调试。

VS Code

预计在 Python 扩展更新后,将支持如下配置:
// launch.json{    "version""0.2.0",    "configurations": [        {            "name""Attach to Remote (Safe Debug)",            "type""python",            "request""attach",            "mode""safe-external",            "host""prod-server.example.com",            "port"5678,            "authToken""${env:DEBUG_AUTH_TOKEN}",            "permissions": ["read_stack""read_vars"]        }    ]}
在 VS Code 中按 F5,选择"Attach to Remote (Safe Debug)",就能像调试本地代码一样调试生产环境——只不过断点不会暂停整个进程,而是记录快照。

PyCharm

PyCharm 预计将在"Run → Attach to Process"菜单中增加"Safe External Debug"模式:
PyCharm 的安全 attach 配置# Run → Edit Configurations → + → Python Safe Debug# Host: prod-server.example.com# Auth Token: ********# Permissions: readstack, readvars (勾选)
曾经需要重启才能调试的场景,现在一键 attach,调试完一键 detach。开发体验质的飞跃。

七、安全注意事项:能力越大,责任越大

虽然 PEP 768 设计了完善的安全模型,但生产环境使用外部调试仍然需要格外谨慎:

1. 最小权限原则

✅ 生产环境推荐:只读权限sys.enable_external_debugging(    auth_token=os.environ["DEBUG_AUTH_TOKEN"],    permissions=["read_stack""read_vars"]  # 只读,不暂停)# ❌ 危险:允许执行表达式sys.enable_external_debugging(    auth_token=os.environ["DEBUG_AUTH_TOKEN"],    permissions=["read_stack""read_vars""eval_expr"]  # eval_expr 可执行任意代码!)
eval_expr权限等同于给你一个远程 shell,生产环境慎之又慎。

2. Token 管理

✅ 从安全存储读取 tokentoken = os.environ["DEBUG_AUTH_TOKEN"]  # 通过 K8s Secret / Vault 注入# ❌ 硬编码 tokensys.enable_external_debugging(    auth_token="my-password-123",  # 绝对不要这样做!    permissions=["read_stack"])

3. 限时启用

推荐做法:只在需要调试的窗口期启用import sysimport signaldef enable_debug_temporarily(duration_seconds=600):    """临时启用调试,超时自动关闭"""    sys.enable_external_debugging(        auth_token=os.environ["DEBUG_AUTH_TOKEN"],        permissions=["read_stack""read_vars"]    )    # 10 分钟后自动关闭调试接口    signal.alarm(duration_seconds)# 通过管理接口触发@app.route("/admin/enable-debug", methods=["POST"])def admin_enable_debug():    if verify_admin_auth(request):        enable_debug_temporarily(600)        return {"status""enabled""duration""600s"}

八、DevOps/SRE 工作流变革

PEP 768 对运维工作流的影响是深远的。想象一下未来的标准操作流程:
1. 发现问题:监控告警触发# 2. 一键启用安全调试kubectl exec deployment/my-app -- </span>  env ENABLE_SAFE_DEBUG=1 DEBUG_AUTH_TOKEN=$(vault read -field=token secret/debug) </span>  kill -SIGUSR1 1  # 通过信号触发调试模式# 3. 开发者远程 attachvscode-remote-debug attach --host prod --token $DEBUG_TOKEN# 4. 调试完成,一键关闭kubectl exec deployment/my-app -- kill -SIGUSR2 1
不需要重启服务,不需要修改代码,不需要在日志里大海捞针。整个调试过程可审计、可追溯、可控制。
对于 SRE 来说,这意味着:
MTTR(平均恢复时间)大幅缩短:从"复现→排查→修复→部署"缩短为"attach→定位→热修复"
调试过程可审计:谁在什么时间 attach 了哪个进程,做了什么操作,全部有记录
生产环境安全性不降级:权限控制和认证机制确保调试不会成为安全漏洞

九、性能分析:调试器的另一面

PEP 768 不只是断点调试,它还是性能分析的利器:
与 py-spy 不同的是,PEP 768 的性能分析是官方接口,不依赖内存布局解析,不受 CPython 版本变化影响,数据准确性有保障。

十、最佳实践与安全建议

安全检查清单:
检查项要求
Token 存储通过 Vault/K8s Secret 管理,不硬编码
权限范围默认只读,按需开放
启用方式环境变量控制,不默认开启
调试时长建议限时,调试完即关闭
审计日志记录所有 attach/detach 操作
网络访问调试端口仅对 VPN/内网开放

十一、结语:从"玄学调试"到"精准手术"

回顾一下 Python 生产环境调试的进化史:
print 加日志 → py-spy 只能看 → pydevd 需重启 → PEP 768 安全 attach
PEP 768 给我们带来的不仅仅是一个新的调试接口,而是一套完整的生产环境安全调试方法论
零开销承诺:不调试时性能损耗为零,不会因为"可能要调试"而拖慢生产
安全第一:opt-in + 认证 + 权限控制,三重保险
IDE 原生集成:调试生产环境就像调试本地代码一样自然
可审计可追溯:每次 attach 都有记录,合规无忧
从此以后,当你凌晨三点被叫起来排查生产 bug 时,不再需要在日志大海捞针,不再需要冒险重启服务。attach 上去,看一眼调用栈,设个只读断点,问题一目了然。
这才是生产环境调试该有的样子——安全、精准、不打扰
Python 3.14,不止是快,更是"稳"。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 22:54:43 HTTP/2.0 GET : https://f.mffb.com.cn/a/489396.html
  2. 运行时间 : 0.220662s [ 吞吐率:4.53req/s ] 内存消耗:4,812.52kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=bdf6cc7902a27a0fb1a087fb6d54731a
  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.001095s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001852s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.005548s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.003676s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001731s ]
  6. SELECT * FROM `set` [ RunTime:0.000605s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001780s ]
  8. SELECT * FROM `article` WHERE `id` = 489396 LIMIT 1 [ RunTime:0.005388s ]
  9. UPDATE `article` SET `lasttime` = 1783090483 WHERE `id` = 489396 [ RunTime:0.016028s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.002918s ]
  11. SELECT * FROM `article` WHERE `id` < 489396 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.003481s ]
  12. SELECT * FROM `article` WHERE `id` > 489396 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000995s ]
  13. SELECT * FROM `article` WHERE `id` < 489396 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004351s ]
  14. SELECT * FROM `article` WHERE `id` < 489396 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002395s ]
  15. SELECT * FROM `article` WHERE `id` < 489396 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003200s ]
0.224303s