FlintHub 1.0-燧石论坛 —— 轻量级、高性能、零 MySQL 依赖的 PHP 社区系统。 内核:SplitDB 纯 SQLite 分片存储引擎 v2.3 运行环境:PHP ≥ 8.0(推荐 8.2+)· SQLite ≥ 3.33 · 无 MySQL 依赖 版本:
FLINTHUB_VERSION = V1.0.0(version.php为单一版本源)
一、项目定位
FlintHub(燧石论坛)是一款面向低资源虚拟主机与轻量部署场景的社区论坛程序。它放弃了对 MySQL 的重依赖,改用自研的 SplitDB 纯 SQLite 分片引擎,在普通虚拟主机就能承载可观的社区规模,实测基准:
- 19 万+ 主题、16 万+ 回复、5 万+ 用户、235 万+ 搜索索引行
核心理念:零外部依赖(纯 PHP + SQLite,无 Composer、无 Redis、无附加 Nginx 模块)、极致轻量(单一前端控制器入口,核心代码精简)、分片存储(季度时序分区 + 哈希分桶)、外置正文(帖子正文剥离数据库,存为 .txt/.bin 文件)、插件驱动(完整钩子系统 + 独立数据库 + 多语言,内置 17 个插件零侵入核心)。
二、核心特性
| 维度 | 特性 |
|---|---|
| 零 MySQL 依赖 | 纯 SQLite 分片引擎,无需部署/维护数据库服务,运维成本趋零 |
| 分片存储 | 季度时序分区(每季度一目录)+ 哈希分桶;单库文件极小,读写均衡 |
| 零迁移扩容 | 桶数 32→64→128 平滑升级,新数据路由进新增桶范围,历史数据永不迁移 |
| 外置正文 | 帖子/回复正文剥离 SQLite(.txt 存量 + .bin/.idx 归档),库文件体积极小 |
| 极致性能 | 游客列表页静态 HTML 缓存(命中 3~10ms)、前置缓存、keyset 游标分页、LRU 连接池 |
| 插件驱动 | 钩子系统 + 插件独立数据库 + 多语言自动合并,内置 17 个插件零侵入核心 |
| 多语言原生 | zh / en / zh_tw 三语,核心键优先合并,缺 key 回退链永不白屏 |
| 安全纵深 | 全量参数化查询、模板自动转义、CSRF(hash_equals 一次性消费)、XSS 白名单净化、文件上传白名单 + MIME 校验、频率限制(Session + IP 双重)、登录/注册 PoW 工作量证明为主 + 图形验证码兜底(防爆破)、IP 限流、审计日志 |
| 响应式 & 主题化 | 原生响应式(一套 HTML 同时适配 PC / 移动端)、--mn-* CSS 变量主题、5 个内置配色 + 夜间模式 + 用户自定义 CSS |
| PWA 支持 | Service Worker 缓存 + manifest,可添加到主屏幕 |
| 二级目录部署 | 全链路 BASE_PATH 适配,可部署在任意子目录 |
内置功能块:论坛(主题/回复/楼中楼)、版块权限矩阵、博客、搜索(倒排索引 + 中文二元切词)、私信、标签、勋章、每日签到、任务中心、邀请注册、内容审核、通知、公告、友情链接、PWA 等。
三、安装 / 升级
3.1 快速安装
- 将本目录内容上传到站点根目录(或子目录,见 3.3)。
- 确认环境满足 INSTALL.md 的前置要求(PHP ≥ 8.0、PDO 扩展 +
pdo_sqlite、SQLite ≥ 3.33、mbstring、fileinfo、curl、gd/imagick、openssl)。 - 配置 Web 服务器伪静态规则(Apache
.htaccess已内置;Nginx 见 nginx-server.conf)。 - 浏览器访问
install.php,跟随分步向导:环境检测 → SplitDB 初始化 → 创建管理员。 - 安装完成后
protected/.install_done生成,再次访问install.php会被拒绝(防止二次初始化覆盖数据)。
详细步骤、目录权限清单、服务器配置模板见 INSTALL.md。
3.2 升级
- 升级采用完整包覆盖:下载最新完整包,解压覆盖程序目录(保留
data/、protected/、assets/uploads/不动),清理前台页面缓存即可。 - 覆盖后若提示页面/schema 异常,运行对应
cli/迁移或重建脚本(如搜索重建rebuild_search.php、摘要回填backfill_excerpts.php)。 - 升级前建议备份
data/与protected/(关键运行时数据)。 - 部署到 Apache 需确保
.htaccess生效;Nginx 需nginx -t && nginx -s reload。
3.3 二级目录部署
在 config.php 中设置 define('BASE_PATH', '/forum');(如部署在 /forum 子目录),Router / Controller / PageCache / I18n 将全链路自动适配。
四、文档地图
| 文档 | 说明 |
|---|---|
| INSTALL.md | 安装步骤 + Web 服务器配置规则 |
| CHANGELOG.md | 1.0.0 版本更新记录 |
| 插件开发规范.md | v1.2 插件开发规范(安全红线 / 钩子清单 / 目录结构 / 语言包 / 主题适配 / 核心库访问边界) |
| LICENSE | 开源协议(MIT) |
五、只读发布声明
本发行包为只读发布,特此声明:
- 按原样提供:本程序以「现状」形式发布(provided "AS IS"),不含任何明示或暗示的保证,包括但不限于适销性、特定用途适用性与不侵权。
- 只读包:本目录用于部署安装与参考阅读。作者不承诺提供技术支持或接受代码合并请求,完整责任条款见 LICENSE。
- 数据免责:
data/(运行时数据)与protected/(运行产物、会话、限流缓存、日志)应在全新安装时由install.php自动重建;发行包本身不携带任何站点运行时数据。 - 无担保与无附随责任:使用者对其彻底部署、配置、使用及由此产生的任何直接/间接损失自负责任,作者与维护者不承担任何赔偿责任,完整条款见 LICENSE。
- SECURITY / BUG 致谢:欢迎在合规前提下反馈问题,但修复与迭代不构成对本「只读发布声明」的修改。
FlintHub — 用最少的资源,承载最大的社区。 A lightweight PHP community system powered by SplitDB, the sharded SQLite storage engine.