用 200 行 PHP 写一个不用数据库的博客
数据库很棒,但个人博客未必需要它。文章的增删频率以周计,读者以百计——文件就是最合适的存储。
数据从哪来
把每篇文章写成一个数组项,放在 $POSTS 里,直接用:
[
'slug' => 'hello-world',
'title' => '第一篇文章',
'date' => '2026-01-01',
'tags' => ['随笔'],
'content' => '正文……',
]
这样做的额外好处:数据就是代码,可以直接进 Git,有 diff、有历史、可回滚。
渲染与安全
渲染 Markdown 有两条铁律:
1. 先转义,再套用格式标记;
2. 行内代码要先"挖空"保护起来,否则 **not bold** 会被误伤。
function e(?string $s): string
{
return htmlspecialchars((string) $s, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}
性能
没有查询,没有连接池。所有文章在内存里排序一次就完事,静态文件由 Nginx 直接吐出去。
你不需要为每天 200 次访问准备一套分布式架构。
什么时候该换掉它
- 文章超过几百篇,文件加载开始变慢;
- 需要多人协作与在线编辑器;
- 需要全文检索和复杂的标签组合。
在那之前,保持简单。