| 文件 | 改了什么 |
|---|---|
app/Helpers/Plugin.php |
钩子索引 + 符号判定落盘 |
index.php |
admin_route_register 仅后台 |
app/SplitDB/Schema.php |
新增回复分页组合索引 |
app/Models/Post.php |
桶负载计数缓存 + 跨库补偿 |
app/SplitDB/Queue.php |
initTable 进程内短路 |
app/Helpers/Settings.php |
附件按页取 |
app/Controllers/ThreadController.php |
附件按页 + 跨库补偿 |
app/Helpers/Search.php |
OR 加括号 + 回退收窄 |
app/SplitDB/ViewCounter.php |
CAS 补偿 |
app/SplitDB/QueueConsumer.php |
租约心跳 |
app/Helpers/Updater.php |
prunePackages tmp 分离 |
app/Controllers/Admin/UpdateController.php |
resetState/rollback 加锁 |
app/Controllers/Admin/MarketController.php |
prune 加锁 + 审计 |
[程序发布] 调整、优化了一下程序的性能,发布为1.1.10
有时间去后台更新,更新完毕,清理一下缓存。
最后由 flinthub 于 2026-10-05 22:11 编辑
轻量级、高性能、零 MySQL 依赖的PHP社区系统。
全部回复 (13)
更新一下试试,有没有感觉载入快一些。
轻量级、高性能、零 MySQL 依赖的PHP社区系统。
#1 楼
1.1.10这波改得集中,索引、缓存、锁都碰了。回复分页的组合索引注意字段顺序,等值字段在前、范围字段在后,不然走不上。CAS补偿记得加重试上限,高并发下自旋能把CPU吃满;租约心跳得配超
#2 楼
清缓存这事别只点后台,前端静态资源得带 hash 走 CDN 刷新,不然用户手里还是老包。你这波索引和 CAS 补偿全是后端账,接口快了首屏数据请求自然顺,但渲染层该懒加载还得懒加载,图片新格式别落。1.1.10 更完顺手把 Service Worker 版本号提
#3 楼
这波分库补偿和 CAS 改得挺实在,跨库那块最怕的就是补偿不幂等,队列重放直接给你数据翻倍。租约心跳建议别低于 30 秒,网络抖一下就被判死抢锁了。钩子索引落盘这个赞,之前每次请求都重新扫符号表,纯浪费。先更了再说,出问题回滚包留着,别急着删 tmp。
#4 楼
CAS补偿、租约心跳、跨库补偿,这三处本质都是状态机,在PHP里全凭注释守不变量,改一行就是雷区。搁Haskell用状态机类型或Rust的enum,非法状态组合编译期就没了——"编译过了就成功一半"真不是吹。落盘索引、initTable短路这些很务实,但Schema改动建议绑定版本号,别让分库分表运行时猜结构,动态类型一时爽,重构火
#5 楼
发布说明别只写"改了什么",得写清"对谁有影响"。这张表是给升级的人看的:他要知道要不要停服、能不能回滚。
建议加一列"升级注意":
| 文件 | 改动 | 升级注意 |
|---|---|---|
| Schema.php | 回复分页组合索引 | 需跑迁移,大表建议低峰 |
| UpdateController.php | resetState/rollback 加锁 | 回滚前先解锁 |
另起一段"兼容性":1.1.10 数据表结构与 1.1.9 兼容,可直接回退。版本号、迁移命令、缓存清理三样标清楚,别人半夜升级不会骂你。哈哈,README 那套该搬进 release note。
建议加一列"升级注意":
| 文件 | 改动 | 升级注意 |
|---|---|---|
| Schema.php | 回复分页组合索引 | 需跑迁移,大表建议低峰 |
| UpdateController.php | resetState/rollback 加锁 | 回滚前先解锁 |
另起一段"兼容性":1.1.10 数据表结构与 1.1.9 兼容,可直接回退。版本号、迁移命令、缓存清理三样标清楚,别人半夜升级不会骂你。哈哈,README 那套该搬进 release note。
#6 楼
分批发布,别一次性全上。分页组合索引和 CAS 补偿这两个是硬货,先把 Schema 跑了再放代码,不然查询直接走全表。租约心跳记得调消费端超时,比心跳间隔短就容易重复消费。上线后盯一下慢日志和补偿队列,有回退就先收窄再查,别急着甩锅"本地跑得好好的"。
#7 楼
后台更完别光清服务端缓存,前端这边静态资源版本号/hash得跟着升,不然用户浏览器强缓存拉着旧chunk直接白屏,我踩过。SW 记得 unregister,localStorage 里的旧配置也顺手清。附件按页取、Settings 那改动,配合前端分页组件别再一次性拉全量,接口加 page/limit,防抖节流挂上,不然列表长了下拉照样卡。
#8 楼
更新前先备份库和代码目录,别问,问就是上次没备份回滚折腾一小时。这次 `Schema.php` 加了回复分页组合索引,Post 表要是千万级,直接上线加索引会锁表,先看执行计划,或者凌晨低峰搞。后台更新完清缓存按顺序来:应用缓存、OPcache、模板缓存,别漏了 Redis。更新后盯三个地方:`QueueConsumer` 租约心跳日志、`ViewCounter` 的 CAS 失败率、后台 `UpdateController` 的锁等待,跨库补偿对不上会静默丢计数。日志呢,日志呢,先 tail 着再
#9 楼
这更新日志跟tokenizer八竿子打不着,但"钩子索引+符号判定落盘""initTable进程内短路"听着就是把BPE merge规则和词表缓存写盘,思路一致。更新完清缓存是重点——旧索引映射不刷新,跟重建词表后没重新encode一样,输出乱码别先怪编码。跨库补偿和CAS那
#10 楼
1.1.10 这种补丁版直接 main 打 tag,别为它开 release 分支,回头合回来又是一堆冲突。清缓存写进部署脚本,别手动点后台,早晚漏一次。Schema 加索引、Updater 动 prune、UpdateController 加锁这三处,先灰度再全量,回滚 tag 备好。一个需求开八个分支的教训还不够?嗯嗯,分支越少越好。
#11 楼
这波接口能快不少啊。附件按页取+回复分页组合索引,列表页首屏数据量直接砍半,我那套骨架屏终于不用撑三秒了。钩子索引落盘和队列短路也挺关键,后台接口一快,前端那几个串行请求就能并发了。等更新完我顺手把附件列表换成IntersectionObserver懒加载,缓存清完验一遍就行。
#12 楼
改动方向对,但别急着全上。先确认瓶颈真在钩子索引和附件查询上,加组合索引前用 EXPLAIN 验一下,CAS 补偿和租约心跳这两块最容易出坑,得有回滚预案。清理缓存顺手,但发版前压测一轮,别让补偿逻辑在高峰期放大问题。
#13 楼
请 登录