OPcache是PHP内置的字节码缓存扩展,主要作用是优化PHP脚本的执行流程,减少重复编译带来的性能损耗,在宝塔面板中开启该扩展是提升PHP项目运行速度的常见操作。
OPcache的加速原理
PHP脚本默认的执行流程是:每次请求到来时,PHP解释器会先把脚本文件解析成字节码,再执行字节码返回结果。如果同一个脚本被多次请求,就会重复执行解析编译的过程,造成不必要的性能浪费。
OPcache的工作逻辑是:在PHP脚本第一次被编译后,把生成的字节码缓存到共享内存中。后续再有相同脚本的请求时,PHP解释器会直接从内存中读取已经编译好的字节码执行,跳过解析编译的步骤,从而减少CPU和IO的消耗。
开启OPcache的具体好处
- 减少PHP脚本的编译时间,相同脚本的重复请求执行速度可提升30%到70%,具体提升幅度取决于项目的脚本复杂度。
- 降低服务器的CPU负载,尤其是在高并发场景下,减少重复编译的操作可以释放更多CPU资源处理其他请求。
- 减少磁盘IO操作,不需要每次请求都读取并解析PHP脚本文件,降低磁盘的读写压力。
- 对动态PHP项目友好,比如基于ThinkPHP、Laravel等框架开发的项目,框架文件较多,开启后性能提升会更明显。
宝塔面板开启OPcache的方法
步骤1:安装OPcache扩展
登录宝塔面板,进入软件商店页面,找到已安装的PHP版本,点击对应的设置按钮。
在弹出的设置窗口中,切换到安装扩展标签页,找到列表中的OPcache选项,点击右侧的安装按钮,等待安装完成即可。
步骤2:配置OPcache参数
安装完成后,切换到配置修改标签页,找到OPcache相关的配置项,根据服务器内存情况调整参数,以下是常用的优化配置示例:
[opcache] ; 开启OPcache扩展 opcache.enable=1 ; CLI模式下也开启OPcache,适合命令行执行的PHP脚本 opcache.enable_cli=1 ; 共享内存大小,单位MB,根据服务器内存调整,4G内存建议设置128 opcache.memory_consumption=128 ; 用于存储字符串的内部内存大小,单位MB,建议设置为64 opcache.interned_strings_buffer=64 ; 最大缓存的文件数量,根据项目文件数量调整,建议设置4000 opcache.max_accelerated_files=4000 ; 脚本更新后多久检查一次更新,单位秒,开发环境可设置0,生产环境建议设置60 opcache.revalidate_freq=60 ; 避免缓存大脚本导致内存不足,开启后会在内存不足时清理旧缓存 opcache.force_restart_timeout=180
修改完成后点击页面底部的保存按钮,然后重启对应的PHP服务,配置即可生效。
注意事项
- 如果是开发环境,建议把
opcache.revalidate_freq设置为0,这样修改PHP脚本后可以立即生效,不需要等待缓存过期。 - 如果项目中有动态生成PHP脚本的场景,需要合理设置缓存过期时间,避免出现脚本更新后仍然执行旧缓存的问题。
- 可以通过
opcache_get_status()函数查看OPcache的运行状态,确认缓存是否正常工作,以下是简单的状态查看代码:
<?php
// 获取OPcache运行状态
$status = opcache_get_status();
// 判断OPcache是否开启
if ($status['opcache_enabled']) {
echo "OPcache已开启<br/>";
echo "缓存的脚本数量:" . $status['opcache_statistics']['num_cached_scripts'] . "<br/>";
echo "缓存命中率:" . round($status['opcache_statistics']['opcache_hit_rate'], 2) . "%";
} else {
echo "OPcache未开启";
}
?>
OPcachePHP加速宝塔面板opcache_enable修改时间:2026-07-17 12:03:32