PHP文件缓存适合低频读写、单机部署场景,可用file_put_contents+serialize或json_encode实现,但需注意反序列化风险、权限、并发写入及过期清理问题。
PHP 文件缓存不是“不能用”,而是容易踩坑——比如并发写入导致数据损坏、序列化格式不一致、权限错误直接失败。它只适合低频读写、单机部署、无严格一致性要求的场景,比如存个配置快照或临时统计。
用 file_put_contents() + serialize() 最简存取
这是最轻量的组合,不依赖扩展,三行代码搞定存和取:
file_put_contents('/tmp/cache.dat', serialize($data));
$data = unserialize(file_get_contents('/tmp/cache.dat'));
但要注意:
-
unserialize()有反序列化风险,绝不能用于不可信数据(比如用户传来的缓存键) - 文件路径必须有写权限,且 PHP 进程能访问(
/tmp通常安全,./cache/要手动chmod) - 没加锁,高并发时可能写乱——两个请求同时写,后写完的覆盖前写的
加文件锁避免并发写坏数据
用 fopen() 配合 LOCK_EX 是简单可靠的方案:
立即学习“PHP免费学习笔记(深入)”;