本文由 FlintHub 开发文档归档发布。原始文档日期见标题前缀,来源:暂存20260913/docs/代码统计 (2).md。
FlintHub 1.0 代码统计报告
版本:FlintHub V1.0.0(SplitDB 纯 SQLite 分片引擎)
统计口径:安装包
FlintHub1.0.0/(最终交付物,已精简迁移/测试/诊断脚本)统计方法:PHP 脚本逐文件逐行计数(含空行/非空行)
日期:2026-08-16 | 备查文档
一、总览
交付物总计:351 个文件 / 44,285 行(非空 40,363 行)
| 目录 | 文件数 | 行数 | 占比 |
|---|---|---|---|
| app/(全量业务代码) | 129 | 20,685 | 46.7% |
| plugins/(15 插件) | 183 | 15,770 | 35.6% |
| assets/(CSS/JS/资源) | 25 | 6,197 | 14.0% |
| cli/(精简三件套) | 3 | 285 | 0.6% |
| 入口文件(index/install/cron/nginx) | 4 | 923 | 2.1% |
| protected/(防护文件) | 2 | 44 | 0.1% |
| data/(防护文件) | 2 | 43 | 0.1% |
| 说明.md / 文档 | 2 | 336 | 0.8% |
| SVG 徽标 | 2 | 32 | 0.1% |
另单列(不计入交付物):protected/database/legacy/(旧 MySQL 归档死代码)3 文件 / 1,148 行,仅存档不参与运行。
二、按文件类型
| 类型 | 文件数 | 行数 |
|---|---|---|
.php | 272 | 31,964 |
.css | 24 | 7,604 |
.js | 9 | 2,922 |
.md | 14 | 1,237 |
.json(插件清单) | 15 | 216 |
.svg | 12 | 182 |
.conf(nginx-server.conf) | 1 | 73 |
.htaccess | 2 | 45 |
.config(web.config) | 2 | 42 |
三、app/ 核心模块明细(20,685 行 PHP)
| 模块 | 文件数 | 行数 | 说明 |
|---|---|---|---|
| Core(框架内核) | 6 | 1,514 | Autoloader/Router/Controller/Model/Database/TemplateCompiler |
| Controllers | 29 | 4,963 | 前台 13 + 后台 16(含 Admin 子目录) |
| Helpers | 20 | 4,543 | Auth/Permission/Csrf/Content/Search/Settings/PageCache 等 |
| Models | 10 | 2,211 | User/Thread/Post/Category/Tag/Blog/Message/Setting 等 |
| SplitDB(分片引擎) | 9 | 2,098 | DBFactory/IDGenerator/ShardRouter/ExternStorage/Queue/QueueConsumer/Schema/SearchIndexStore/ViewCounter |
| Views | 54 | 5,168 | 前台/后台全部模板视图 |
| init.php | 1 | 188 | 应用初始化 |
3.1 SplitDB 分片引擎(9 类,2,098 行)
| 类 | 职责 | 亮点 |
|---|---|---|
| DBFactory | SQLite 连接池 | LRU ≤8 句柄、统一 6 条 PRAGMA、禁持久连接 |
| IDGenerator | 全局 ID 生成 | BEGIN IMMEDIATE 原子取号(兼容无 RETURNING 的 SQLite 3.33) |
| ShardRouter | 分片路由 | 季度 + ID%32 哈希双级分区,读取以 bucket_path 为准 |
| ExternStorage | 正文外置存储 | tmp+rename 原子写;.bin/.idx 偏移索引 + .txt 回退 |
| Queue / QueueConsumer | 异步任务队列 | 3 队列打散锁竞争;CAS 抢占/超时恢复/重试上限 |
| Schema | 初始化与种子 | 幂等 bootstrap + 默认种子 + .htaccess/web.config 防护生成 |
| SearchIndexStore | 搜索索引 | 季度分文件存储(与 business 库物理隔离) |
| ViewCounter | 浏览计数 | APCu 内存计数 + shutdown 落库;无 APCu 降级直写 |
3.2 Helpers(20 个,4,543 行)
AuditLog / Auth / Captcha / Content / Csrf / Emoji / Mailer / PageCache / Permission / Plugin / Points / RateLimiter / RememberMe / Search / Segmenter / Settings / Tag / Theme / Upload / Vote
3.3 Controllers(29 个,4,963 行)
- 前台 13:Home / Forum / Thread / Post / Auth / Profile / Message / Blog / Search / Tags / Theme / Api / Attachment
- 后台 16:Base / Dashboard / User / Thread / Category / Blog / Tag / Level / Group / Theme / Settings / Database / Maintenance / Trashed / Plugin / Verify
四、插件明细(15 个,合计 14,839 行 PHP/JS/CSS)
| 插件 | 文件数 | 行数 | 插件 | 文件数 | 行数 |
|---|---|---|---|---|---|
| content_review(内容审核) | 18 | 2,028 | notifications(通知) | 15 | 626 |
| quiz_duel(答题对决) | 11 | 1,768 | seo(SEO) | 11 | 541 |
| icon_generator(图标生成) | 8 | 1,677 | announcements(公告) | 9 | 588 |
| medal(勋章系统) | 16 | 1,549 | invite(邀请注册) | 11 | 367 |
| red_packet(红包) | 10 | 1,115 | edit_info(编辑历史) | 6 | 266 |
| friend_links(友情链接) | 13 | 1,021 | user_profile(用户主页) | 10 | 850 |
| dice(掷骰子) | 9 | 845 | post_favorite(帖子收藏) | 11 | 779 |
| daily_checkin(每日签到) | 12 | 819 | 合计 | 170 | 14,839 |
注:插件目录内
data/{id}.sqlite独立数据库不统计(运行时生成);plugins_cache.php为扫描缓存不计入。
五、cli/ 与入口文件
5.1 cli/(安装包精简三件套,285 行)
| 文件 | 行数 | 用途 |
|---|---|---|
| worker.php | 83 | 队列消费者(常驻 / --once) |
| rebuild_search.php | 92 | 重建搜索索引 |
| archive.php | 110 | 冷数据归档 |
5.2 根目录入口文件(923 行)
| 文件 | 行数 |
|---|---|
| index.php | 258 |
| install.php | 520 |
| cron_trigger.php | 72 |
| nginx-server.conf | 73 |
六、资产(assets/,6,197 行)
| 子目录 | 文件数 | 行数 |
|---|---|---|
| css/(modern 主题基座 + components/admin/editor/style/fontawesome + themes 变体) | 10 | 4,010 |
| js/(editor.js 自研编辑器 2,017 行 + thread.js/auth.js) | 3 | 2,017 |
| lib/(fhstate/fhajax 定制封装) | 2 | 20 |
| medals/(勋章 SVG) | 10 | 150 |
注:第三方库(marked.min.js / turndown.js / turndown-plugin-gfm.js / qrcode.min.js / fontawesome)不计入;
assets/uploads/(用户上传+种子头像)不统计。
七、与根目录对比
| 口径 | 文件数 | 行数 | 说明 |
|---|---|---|---|
| 根目录全量(开发环境) | 379 | 51,433 | 含迁移/测试/诊断脚本(+7,148 行) |
| 安装包交付物 | 351 | 44,285 | 精简后的最终发行形态 |
| 差值(已精简) | -28 | -7,148 | migrate×4、seed×2、smoke×14、probe、_tmp/_debug 临时脚本 |
精简内容:migrate.php / migrate_extern_to_bin.php / migrate_search_quarters.php / migrate_plugins.php / shrink_business.php(迁移优化类);seed_content.php / seed_content_data.php(测试数据生成);smoke_.php ×14(冒烟测试);probe_page_cache.php(诊断);_debug_ / _tmp_*(开发临时脚本)。
八、数据规模基线(供性能评估参考)
| 数据项 | 规模 |
|---|---|
| 用户 | 50,008 |
| 帖子(topic_index) | 192,111 |
| 回复(reply_index) | 160,753 |
| 搜索索引(search_index 季度分文件) | 2,357,922 |
| 正文外置(extern) | 351,509 条(.bin/.idx + .txt) |
| 分片桶 | 季度 × 32 桶(active)+ 归档桶 |
代码统计完。统计脚本用后即删,数据基于安装包 FlintHub1.0.0/ 实际文件逐行计数。