• 307
    老帖自动关闭
    ID auto_close_topics版本 1.0.3插件制作者 307免费138 行 / 5.6 KBHook / 路由 / 后台页
    超过设定天数没有新回复的主题自动禁止继续回复,减少挖坟刷屏。
    app/plugins/auto_close_topics/plugin.php
    本插件的完善需要你的积极参与。安装使用中遇到任何,不要抱怨,请直接回帖描述,帮助开发者完善。
    开发日志已有 1 条

    个人独立维护项目。

    • 307
      307
      版本 1.0.3 23d39f1e08bc 更新:第三轮 UI 打磨:后台顶栏标签与配置界面补齐release
    主楼
  • 质量报告

    插件质量报告

    插件:auto_close_topics

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    app.boot全站请求启动否5---读 plugin_auto_close_topics
    topic.title_suffix首页/版块主题列表逐条标题是5----
    reply.before_save回帖发布/编辑表单提交否3----
    admin.tabs后台管理页标签栏否1----

    颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。

    数据字典

    plugin_auto_close_topics

    字段类型可空默认值约束
    topic_iduint否-主键
    closed_atuint否--
    #1
  • 307

    性能优化:渲染钩子改为请求级批量读取,消除逐行数据库查询。

    #2
  • 307

    已更新 auto_close_topics 至 v1.0.2(当前待审核):针对质量报告中的「修正❗️」项,渲染钩子内的数据库读取已全部迁移至每请求执行一次的预加载点(app.boot 或 topic.replies 页面级预加载),列表与楼层渲染只读取内存缓存,不再在逐条渲染循环内访问数据库;写入路径在保存/管理动作后重建缓存。已在本机 8765 完整回归:徽章与交互渲染、权限拦截均正常。

    #3
  • 307

    版本 1.0.3 更新:
    第三轮 UI 打磨:后台顶栏标签与配置界面补齐

    #4
  • 350

    🔍 插件审查报告(对照《AI 开发规则》与开发者文档)

    🔒 安全问题

    未发现明显问题(配置输入经数字白名单校验、SQL 参数化、表单带 CSRF、版块 ID 有正则校验)。

    ⚡ 性能问题

    1. app.boot 每请求全表加载:plugin.php:29 将 plugin_auto_close_topics 整表载入内存并存入全局变量,且关闭记录只增不减、无上限;站点规模变大后,每个请求(含图片、接口)都要做一次全表扫描。建议改为按需查询(仅在列表/回帖保存时查所需 topic_id),或为关闭记录增加清理与上限机制。

    🐛 功能/规范缺陷

    1. cron 首轮全量关闭时在 foreach 内逐条 app_db_insert_ignore()(plugin.php:73-77);大批量首轮可改为一次性批量 INSERT IGNORE,后续增量再走单条,避免数千次单独写入。

    ✅ 修复优先级

    优先处理 app.boot 全表加载(性能),其次优化 cron 批量写入。

    #5

发表回复

登录后回复