乐于分享
好东西不私藏

BRAT:Obsidian 插件测试的隐藏基础设施

BRAT:Obsidian 插件测试的隐藏基础设施

BRAT:Obsidian 插件测试的隐藏基础设施

封面图

🔗 项目地址:https://github.com/TfTHacker/obsidian42-brat

📚 官方文档:https://tfthacker.com/BRAT

如果你经常折腾 Obsidian 插件,大概率遇到过这种场景:开发者丢给你一个 GitHub 仓库,让你帮忙测一个还没上架社区市场的 beta 版本。

看起来只是“装一下插件”,实际操作却很碎:下载 release、找到 manifest.jsonmain.jsstyles.css,复制到 vault 的插件目录,启用插件,等开发者修完再重复一遍。到了移动端,事情更麻烦,文件复制、同步、重载都容易打断测试节奏。

🧩 BRAT 的价值,不是让你“多装一个插件”,而是把 Obsidian beta 插件和主题测试变成一条可重复、可更新、可回滚的工作流。

1. 🧭 正文大纲

01| BRAT 是什么,它解决了哪类测试问题。

02| 桌面端如何用 BRAT 安装、启用、更新 beta 插件。

03| 移动端怎么利用 BRAT 降低重载和同步成本。

04| frozen release tag、单插件更新、重装、停用分别适合什么场景。

05| beta 主题、私有 GitHub 仓库和开发者 release 机制怎么处理。

06| 使用前需要知道哪些安全边界和维护风险。

2. 🔎 先看 BRAT 是什么

BRAT 全称是 Beta Reviewer’s Auto-update Tool,是一个面向 Obsidian 的 beta 插件和主题测试工具。它的核心动作很直接:你给它一个 GitHub repository path,它帮你下载、安装、更新,并在需要时重载插件。

GitHub 页面当前显示,这个项目大约有 1.4k stars、83 forks、57 个 releases,最新 release 是 2.0.4。这不是一个临时脚本,而是 Obsidian 社区里已经被长期使用的测试工具。

GitHub 仓库概览

README 里的定位也很清楚:BRAT 是给插件和主题开发者、beta tester 用的。它让测试者不必再手动创建文件夹、下载文件、复制到正确位置。

README 中对 BRAT 的定位

我会把它理解成 Obsidian 插件生态里的一个“测试通道”:社区市场是稳定通道,手动复制是野路子,而 BRAT 让 beta 测试有了更接近工程化的入口。

3. 🧱 它解决的真问题

手动测试 Obsidian 插件时,最大的问题不是“难”,而是“不稳定”。

你可能第一次能装成功,但第二次更新就忘了覆盖哪个文件;你可能桌面端能测,移动端又要重新同步;你可能正在复现一个 bug,结果插件自动更新了,环境变了,问题也复现不了了。

BRAT 解决的是这些细节成本。

01| 它把 GitHub 仓库变成 Obsidian 可安装的 beta 插件来源。

02| 它让测试者可以从命令面板更新 beta 插件,而不是手动下载文件。

03| 它支持冻结某个 release tag,方便复现固定版本的问题。

04| 它能重载、重装、启用、停用插件,减少反复进设置页的操作。

05| 它也能测试主题,不只服务插件。

所以,BRAT 更像是一个“测试工作流入口”,而不是普通插件管理器。

4. 🖥️ 桌面端:安装一个 beta 插件

先讲最常见的使用方式:在桌面端测试一个还没有进入社区插件市场的 beta 插件。

官方 Quick guide 里的流程很明确:安装 BRAT 后,拿到开发者提供的 GitHub 仓库地址,在命令面板里执行 BRAT: Add a beta plugin for testing,再把 repository path 粘进去。

添加 beta 插件的官方步骤

实际操作可以按这个顺序来:

01| 在 Obsidian 的 Community plugins 里安装并启用 BRAT。

02| 从插件开发者那里拿到 GitHub 仓库地址,例如 TfTHacker/obsidian42-brat 或完整 URL。

03| 打开命令面板,执行 BRAT: Add a beta plugin for testing

04| 在弹窗中粘贴 repository path,点击 Add Plugin

05| 等 BRAT 完成下载和安装后,到 Community plugins 页面刷新列表。

06| 找到刚安装的 beta 插件,手动启用它。

这里有一个细节值得记住:BRAT 负责把插件装进 vault,但“启用插件”仍然要回到 Obsidian 的 Community plugins 页面完成。这个设计其实挺合理,因为启用插件本身就是一个安全边界。

5. 🔄 更新、冻结和单插件更新

BRAT 的价值不只在第一次安装,更在后续更新。

如果开发者修了 bug,你不需要重新下载 release,也不需要手动覆盖文件。打开命令面板,执行 Check for updates to all beta plugins and UPDATE,BRAT 会检查 beta 插件并更新。

插件更新、冻结和单插件操作

这里有几个命令场景要分清。

01|更新所有 beta 插件 适合你同时测试多个插件,并且希望一次性拉到最新版本。

02|只检查,不更新 适合你想先确认有没有新版本,但暂时不想改变当前测试环境。

03|只更新一个插件 适合你正在测试某个具体插件,不想让其他 beta 插件也跟着变化。

04|冻结 release tag 如果你要复现一个固定 bug,可以用 BRAT: Add a beta plugin with frozen version based on a release tag。这样插件会停在指定 release,不会被普通更新带走。

05|等待 GitHub 缓存 官方文档提醒,GitHub 缓存可能导致更新有 5 到 15 分钟延迟。开发者说“我刚发了”,你这里暂时没刷出来,并不一定是 BRAT 坏了。

我的建议是:如果你在帮别人测插件,先问清楚这次测试要测“最新版本”还是“某个固定 release”。这会影响你应该用普通添加,还是 frozen tag。

6. 📱 移动端:BRAT 的一个隐藏价值

很多人只在桌面端用 Obsidian 插件,但真正麻烦的测试往往发生在移动端。

移动端不像桌面端那样方便拖文件、看目录、覆盖 main.js。如果一个插件需要测试 iPad 或手机行为,手动安装 beta 版本会很折腾。

BRAT 不能替你解决所有移动端兼容问题,但它至少让“安装和重载 beta 插件”这件事变得更顺。

官方文档里专门提到 Restart a plugin 对移动端开发有帮助:开发者可以用 Obsidian Sync 把代码变化同步到 iPad,然后在 iPad 上通过 restart command 重载插件,而不是重启整个 Obsidian。

移动端测试中的 Restart a plugin

这部分很适合下面几类场景:

01| 插件开发者需要快速验证移动端 UI。

02| 测试者不方便直接接触移动端插件目录。

03| 一个 bug 只在 iOS 或 Android 上出现。

04| 你需要反复启用、停用、重载同一个 beta 插件。

但也别把 BRAT 理解成移动端万能工具。移动端测试仍然依赖网络、GitHub 可访问性、Obsidian Sync 状态,以及插件本身是否支持移动端。BRAT 只是把最烦的那部分流程变短了。

7. 🧹 停用、删除和重装:别把两个动作混在一起

BRAT 里“停止更新”和 Obsidian 里“卸载插件”不是同一件事。

如果你在 BRAT 设置里把某个 beta 插件移除,它只是不再被 BRAT 监控和更新。插件文件仍然可能留在你的 vault 里,插件也可能仍然在 Obsidian 的 Community plugins 中存在。

真正想删除插件,还需要回到 Community plugins,像卸载普通插件一样卸载它。

这点很重要。很多测试者以为“从 BRAT 删除”就等于“插件没了”,结果后面发现插件还在 Obsidian 里,只是不再跟着 BRAT 更新。

另一个有用命令是 reinstall。适合这几种情况:

01| 本地 beta 插件文件损坏了。

02| 你手动改过插件文件,想恢复 GitHub 版本。

03| 更新过程异常,想重新从仓库拉一份。

04| 你需要确认当前测试环境和 release 里的文件一致。

重装不是每天都会用,但测试插件时一旦遇到“我不知道本地文件是不是干净的”,它会很有用。

8. 🎨 BRAT 也能测试 beta 主题

BRAT 不只服务插件,也能测试主题。

测试主题时,命令面板里使用 Grab a beta theme for testing from a GitHub repository,输入主题所在的 GitHub 仓库地址。BRAT 会验证主题是否存在,下载它,并切换当前主题。

主题这部分有一个关键机制:BRAT 会下载 theme.css 和 manifest.json 到 vault 的 themes 文件夹。

更重要的是,官方文档提到,如果仓库里存在 theme-beta.css,BRAT 会优先使用它,并忽略 theme.css

主题测试中的 theme-beta.css 机制

这给主题作者留了一个很实用的测试策略:

01|theme.css 保持给普通用户使用。

02|theme-beta.css 放正在测试的新版本。

03| beta 测试结束后,再把稳定变化合并回 theme.css

但这里也有坑。官方文档提醒,如果 theme-beta.css 一直存在,BRAT 会继续优先使用它。主题作者需要自己管理这个文件,避免测试者长期停在过期 beta 文件上。

另外,主题更新也可能受到 GitHub 缓存影响。如果测试者刚刚更新还没看到效果,可以等几分钟再试,不要马上判断是 BRAT 或主题本身坏了。

9. 🔐 私有 GitHub 仓库怎么用

很多插件还没公开发布时,仓库可能是 private。BRAT 对私有 GitHub 仓库也有支持,但官方明确标注为 experimental。

这意味着它可以用,但不要把它当成覆盖所有企业权限场景的完整私有制品分发系统。

私有仓库 token 设置说明

官方流程可以拆成两端来看。

插件开发者这边:

01| 到 GitHub 生成 fine-grained personal access token。

02| token 只授予目标私有仓库访问权限。

03| repository permission 选择对应测试仓库。

04| contents 权限至少设置为 read-only。

05| 把 token 交给 beta tester。

测试者这边:

01| 打开 BRAT Settings。

02| 找到 private token 字段。

03| 填入开发者提供的 token。

04| 再按普通流程添加私有仓库的 repository path。

这里我会特别提醒一句:🔐 token 是敏感凭证,不要为了省事给 broad access。

最好的做法是只授权测试仓库、只给 read-only contents 权限、设置合理过期时间,测试结束后撤销 token。如果团队已经有更成熟的内部包分发或权限系统,也不要强行用 BRAT 替代。

10. 🧪 开发者视角:BRAT 依赖 GitHub Releases

如果你只是测试者,前面的内容已经够用了。但如果你是插件开发者,最好理解一下 BRAT 背后的 release 逻辑。

官方开发者文档写得很明确:Obsidian 插件的 release assets 应该包含 manifest.jsonmain.js,必要时还要包含 styles.css。BRAT 会从 GitHub releases 中选择对应版本,并下载这些文件。

GitHub Releases 与 manifest.json 机制

从 v1.1.0 之后,BRAT 主要基于 GitHub releases 工作。旧的 manifest-beta.json 仍然兼容,但已经不是推荐主线。

这里有一个容易踩的点:不要过早把 beta 版本号提交到默认分支的 manifest.json。因为 Obsidian 自己也会根据默认分支里的 manifest.json 判断更新,过早提交可能影响正式用户的正常更新通道。

如果要测试 pre-release,更好的方式是通过 GitHub release 管理 beta 文件,让 BRAT 作为 beta 通道,而不是污染默认分支。

11. ⚠️ 使用前必须知道的边界

BRAT 很方便,但它不是安全沙箱,也不是插件审计工具。

beta 插件本质上就是未稳定版本。它可能有 bug,可能破坏你的配置,也可能在移动端表现不一致。所以我不建议你直接在主力 vault 里测试陌生 beta 插件。

更稳的做法是:

01| 准备一个测试 vault。

02| 只添加可信开发者或可信项目的 GitHub 仓库。

03| 私有仓库 token 只给最小权限。

04| 复现问题时使用 frozen release tag 固定版本。

05| 测完后从 BRAT 移除监控,再从 Obsidian 卸载插件。

如果你是开发者,也要给测试者写清楚 repository path、目标 release、是否需要 frozen tag、插件是否支持移动端、更新后是否需要重载。别只丢一个链接过去。

12. ✅ 我的结论

BRAT 值得放进 Obsidian 测试工具箱。

它最重要的价值不是“安装插件更快”,而是让 beta 插件和主题测试变成一个可复现、可更新、可回滚的流程。

对测试者来说,它减少了手动复制文件的低级错误。对开发者来说,它让 beta 分发更接近正式 release 流程。对主题作者来说,theme-beta.css 提供了一个清晰的测试通道。对移动端测试来说,restart 和同步配合起来,能明显降低反复重启的成本。

🧠 如果你经常测试 Obsidian 插件,BRAT 不是“可有可无的小工具”,而是值得长期保留的基础设施。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-23 01:21:21 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/649743.html
  2. 运行时间 : 0.277108s [ 吞吐率:3.61req/s ] 内存消耗:4,659.82kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=014ef43c4ca97001d70b31e8e13e55b7
  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.001038s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001681s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001665s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000706s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001375s ]
  6. SELECT * FROM `set` [ RunTime:0.000629s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001502s ]
  8. SELECT * FROM `article` WHERE `id` = 649743 LIMIT 1 [ RunTime:0.007566s ]
  9. UPDATE `article` SET `lasttime` = 1782148881 WHERE `id` = 649743 [ RunTime:0.022617s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000762s ]
  11. SELECT * FROM `article` WHERE `id` < 649743 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001237s ]
  12. SELECT * FROM `article` WHERE `id` > 649743 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004084s ]
  13. SELECT * FROM `article` WHERE `id` < 649743 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002062s ]
  14. SELECT * FROM `article` WHERE `id` < 649743 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002628s ]
  15. SELECT * FROM `article` WHERE `id` < 649743 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003775s ]
0.280435s