ubuntu20.04下nginx+php-fpm开启php缓存OPcache
OPcache 缓存 PHP 脚本的编译字节码,而不是缓存执行结果。
动态内容仍然会运行,但解析和编译的开销减少。
配置
opcache.revalidate_freq
可控制重新加载代码的频率。
1. 检查 PHP 和 OPcache 是否安装
运行以下命令,检查 PHP 和 OPcache 的状态:
php -v php -m | grep opcache
如果
php
命令输出正常版本号,说明 PHP 已安装。如果输出包含
opcache
,说明 OPcache 已启用。
如果 OPcache 未安装:
在 Ubuntu 20.04 上安装 OPcache 扩展:
sudo apt update sudo apt install php-opcache
2. 修改 php.ini
配置文件启用 OPcache
找到 PHP 的配置文件路径。常见路径:
CLI 模式:
/etc/php/7.x/cli/php.ini
PHP-FPM 模式:
/etc/php/7.x/fpm/php.ini
以 PHP-FPM 模式为例,编辑配置文件:
sudo nano /etc/php/7.x/fpm/php.ini
将以下配置添加或确认已存在,并根据需要调整参数:
[opcache] opcache.enable=1 ; 启用OPcache opcache.enable_cli=1 ; 启用 CLI 模式下的 OPcache opcache.memory_consumption=128 ; 分配 128MB 内存给 OPcache opcache.interned_strings_buffer=8 ; 用于字符串的内存大小 opcache.max_accelerated_files=10000 ; 最大缓存文件数量 opcache.revalidate_freq=2 ; 每 2 秒检查文件更新 opcache.validate_timestamps=1 ; 启用时间戳检查,确保实时更新 opcache.save_comments=1 ; 缓存文档注释(建议启用) opcache.fast_shutdown=1 ; 快速关闭以释放资源
注意:将路径中的 7.x
替换为实际安装的 PHP 版本(如 7.4
或 8.1
)。
3. 重启 PHP-FPM 和 Nginx
应用配置更改,重启相关服务:
sudo systemctl restart php7.x-fpm sudo systemctl restart nginx
4. 验证 OPcache 是否生效
创建一个测试 PHP 文件,例如 opcache_info.php
:
sudo nano /var/www/html/opcache_info.php
添加以下内容:
<?php phpinfo();
通过浏览器访问:http://your-domain/opcache_info.php
,在页面中搜索 opcache
,确认 Opcode Caching => Enabled
。
5. 可选:优化动态更新性能
如果需要缓存动态页面,但仍希望在代码更新后尽快生效,可以调整以下参数:
opcache.revalidate_freq=0 ; 禁用定时检查,每次请求都会检查文件更新 opcache.validate_timestamps=1 ; 保持实时检测文件的修改时间
这样可以保证代码更新能立即生效,但会稍微增加 CPU 的开销。
6. 查看 OPcache 状态(可选)
安装 OPcache 状态工具:
git clone https://github.com/amnuts/opcache-gui.git
将文件部署到 /var/www/html/
下,通过浏览器访问对应路径即可监控 OPcache 的缓存状态和命中率。
通过以上步骤,Ubuntu 20.04 下的 Nginx + PHP-FPM 环境就可以成功启用 OPcache 了。