建设中 本站仍在建设中:文章会陆续补充,样式和链接也可能随时调整,感谢你的耐心。

用 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 次访问准备一套分布式架构。

什么时候该换掉它

  • 文章超过几百篇,文件加载开始变慢;
  • 需要多人协作与在线编辑器;
  • 需要全文检索和复杂的标签组合。

在那之前,保持简单。