PHP 7.4 中设置 APCu 缓存需三步:安装扩展、配置参数、代码调用;它不依赖 OPcache,缓存仅限单进程内有效,不跨 FPM worker 或 CLI 进程。

PHP 7.4 中设置 APCu 缓存需完成三步:安装扩展、配置参数、代码调用。它不依赖 OPcache,但两者可共存;缓存数据仅限单进程内有效,不跨 FPM worker 或 CLI 进程。
安装 APCu 扩展
Ubuntu/Debian 系统直接安装:
- sudo apt update && sudo apt install php7.4-apcu
- 安装后检查是否启用:php -m | grep apcu(应输出 apcu)
- 若未出现,确认 /etc/php/7.4/fpm/conf.d/20-apcu.ini 和 /etc/php/7.4/cli/conf.d/20-apcu.ini 存在且含 extension=apcu.so
- 重启服务生效:sudo systemctl restart php7.4-fpm(Web)或 sudo systemctl restart apache2(如用 mod_php)
关键 php.ini 配置项
编辑 /etc/php/7.4/fpm/php.ini(FPM)和 /etc/php/7.4/cli/php.ini(CLI),确保以下配置存在并合理:
- apc.enabled = 1 —— 必须开启,否则所有 APCu 函数返回 false
- apc.shm_size = 64M —— 共享内存总容量,建议 64M–128M(服务器内存的 5% 左右)
- apc.ttl = 3600 —— 默认缓存生存时间(秒),避免设为 0(永不过期)
- apc.gc_ttl = 3600 —— 垃圾回收扫描间隔,应 ≤ ttl,否则过期项滞留内存
- apc.enable_cli = 1 —— CLI 模式下也启用(用于 cron 脚本等)
改完必须重启 PHP-FPM 或 Apache,热加载不生效。
基础代码用法与安全写法
APCu 提供简单函数操作缓存,但要注意返回值判断和大小控制:
- 存数据:apcu_store('key', $value, 600)(10 分钟后自动失效)
- 取数据:$data = apcu_fetch('key'); 判断用 !== false,不是 == null
- 防大对象写入(推荐):
if (strlen(serialize($data)) apcu_store('key', $data, 600);
}
避免缓存 file_get_contents() 结果、大数组或 debug_backtrace() - 并发安全读写(防重复查询):
if (($data = apcu_fetch('user_123')) === false) {
$data = query_db('SELECT * FROM users WHERE id=123');
apcu_store('user_123', $data, 300);
}
验证与监控
加一段调试脚本快速确认状态:
- 新建 apcu-info.php,内容:
- 访问该页面,看 num_hits 是否增长、mem_size 是否在合理范围
- 命中率低或 num_misses 显著高于 num_hits,说明缓存未被复用或 ttl 过短
- 注意:apcu_cache_info() 返回的是当前进程视角的数据,不同 FPM worker 不互通
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











