当前位置: 首页 > news >正文

Linux / 宝塔面板下 PHP OPcache 完整实践指南


Linux / 宝塔面板下 PHP OPcache 完整实践指南

OPcache 是 PHP 官方提供的字节码缓存扩展,通过缓存 PHP 脚本的编译结果,提高 PHP 执行效率。本文讲解从 检测 → 开启 → 使用 → 清理 → 排查问题 的全流程,同时针对宝塔面板界面不实用或无法操作时给出解决方案。


一、什么是 OPcache

  • 功能:缓存 PHP 编译后的字节码,减少重复解析,提高性能

  • 优点:降低 CPU 使用率、缩短响应时间

  • 注意:

    • CLI 和 FPM 缓存独立
    • OPcache 只缓存字节码,不缓存变量或对象数据

二、检测 OPcache 是否启用

1. Linux CLI 检测

php -m | grep opcache
  • 输出 opcache → 已安装
  • 无输出 → 需要安装

查看详细配置:

php -i | grep -i opcache

关键字段:

  • Zend OPcache => enabled → 已加载
  • opcache.enable => On → 是否启用
  • opcache.memory_consumption → 缓存内存大小
  • opcache.max_accelerated_files → 最大缓存文件数

⚠️ CLI 显示的仅是 CLI 缓存,FPM 或 Apache 下缓存独立。

2. FPM 下检测(Web 页面)

新建 opcache_status.php

<?php
header('Content-Type: application/json');
if(function_exists('opcache_get_status')){echo json_encode(opcache_get_status(), JSON_PRETTY_PRINT);
}else{echo json_encode(['status'=>'OPcache 未启用']);
}

访问:

http://你的域名/opcache_status.php

可查看:

  • num_cached_scripts → 当前缓存脚本数
  • hits / misses → 缓存命中情况
  • memory_usage → 内存占用

三、开启 OPcache

1. Linux 命令行方式

  1. 安装:
  • Ubuntu / Debian:
sudo apt update
sudo apt install php-opcache
  • CentOS / RHEL:
sudo yum install php-opcache
  1. 编辑 PHP 配置文件(FPM 或 CLI):
sudo nano /etc/php/8.1/fpm/php.ini

添加或修改:

zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
opcache.validate_timestamps=1
  1. 重启 PHP-FPM:
sudo systemctl restart php8.1-fpm

2. 宝塔面板方式

常规操作:

  1. 登录宝塔 → 软件管理 → PHP 设置 → PHP 扩展 → 勾选 OPcache → 保存
  2. 重载 PHP 或重启 PHP-FPM
  3. 可在设置中调整内存、最大文件数、刷新频率

界面不实用或无法操作时:

  • 直接修改配置文件:面板对应 PHP 配置文件通常在 /www/server/php/版本/etc/php.ini/www/server/php/版本/etc/php-fpm.conf
  • 重载 PHP-FPM
# Linux 系统
sudo systemctl restart php8.1-fpm

即使宝塔面板操作界面异常或参数不显示,手动修改配置 + 重启 PHP-FPM 也能生效。


四、使用 OPcache

1. 查看缓存状态

<?php
print_r(opcache_get_status());

输出包含:

  • num_cached_scripts
  • hits / misses
  • memory_usage
  • 缓存的具体脚本列表

2. 清理缓存

a. 全量清理
opcache_reset();
b. 单文件清理
opcache_invalidate('/www/wwwroot/example/index.php', true);
c. 命令行清理
sudo -u www-data php /path/to/opcache_reset.php

www-data 为 FPM 用户,根据系统实际调整。

d. 重启 PHP-FPM(最彻底)
sudo systemctl restart php8.1-fpm

五、常见问题及解决方法

问题原因解决方法
页面修改不刷新缓存未失效调整 opcache.revalidate_freq=0 或调用 opcache_invalidate()
内存不足memory_consumption 太小增加内存或减少缓存文件数
CLI 与 FPM 状态不同SAPI 独立缓存使用 FPM 下脚本查看状态
OPcache 函数不存在未启用检查配置文件 zend_extension=opcache.so 并重启 FPM
宝塔面板无法操作界面异常或不显示手动修改 php.ini 或对应 FPM 配置 + 重启 PHP-FPM

六、小白实践建议

  1. 新手推荐宝塔面板开启 → 简单安全
  2. 界面异常时 → 手动修改配置 + 重启 PHP-FPM
  3. 部署新版本 → 调用 opcache_reset() 或重启 PHP-FPM
  4. 生产环境优化validate_timestamps=1 设置稍大,减少 I/O
  5. 监控命中率 → 使用 OPcache GUI 或自制脚本查看

✅ 这样就兼顾了:

  • Linux CLI 检测与操作
  • 宝塔面板操作
  • 界面不实用时的替代方案

http://www.xdnf.cn/news/1361953.html

相关文章:

  • 当模型学会集思广益:集成学习的核心原理与多样化协作模式解析
  • 【Hadoop】HDFS 分布式存储系统
  • 数据结构:单链表(详解)
  • Linux-Redis的安装
  • 【Linux】开发工具命令指南:深度解析Vim的使用操作
  • Java项目-苍穹外卖_Day1
  • 计算机毕业设计 java 血液中心服务系统 基于 Java 的血液管理平台Java 开发的血液服务系统
  • 【应急响应工具教程】Unix/Linux 轻量级工具集Busybox
  • 页面中嵌入Coze的Chat SDK
  • (多线程)线程安全和线程不安全 产生的原因 synchronized关键字 synchronized可重入特性死锁 如何避免死锁 内存可见性
  • 前端通过node本地转译rtsp流,配合hls实现浏览
  • Go语言运算符全解析
  • 用 fastmcp 2.0 做一个“短期记忆(Redis)”的 MCP 服务器(Server)+ 一个简单的 Client 例子
  • Java项目-苍穹外卖_Day2
  • Ubuntu24.04配置yolov5
  • 使用 Gemini CLI作为 Claude Code的 subagent
  • 分布式锁设计实战:多级缓存防御设计优化同步性能
  • 《眼科学》10月版面征稿论文速递
  • Nestjs生命周期中全局方法执行顺序
  • 嵌入式开发学习———Linux环境下网络编程学习(六)
  • MySQL 行转列与列转行的实现方式
  • 在新塘SDK下面,有四中文件夹,GCC、IAR、KEIL、和Keil_AC6.这4个工程有什么区别。各自是怎样配置寄存器并实现SPI功能的
  • Aligning Effective Tokens with Video Anomaly in Large Language Models
  • Node.js面试题及详细答案120题(43-55) -- 性能优化与内存管理篇
  • 《飞算Java开发实战:从入门安装到项目部署》
  • 【GEE+Python 实战】用 Sentinel-2 监测 2024 年研究区 NDVI 变化(附完整源码与避坑指南)
  • Codejock Suite ProActiveX COM Crack
  • 一文掌握 Java 键盘输入:从入门到高阶(含完整示例与避坑指南)
  • LIANA | part1 intro部分
  • VMware Workstation 不可恢复错误:(vcpu-0)