当前位置: 首页 > 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.dtcms.com/a/349469.html

相关文章:

  • MCP之weather server demo
  • TCP与HTTP协议以及爬虫
  • 计算机毕业设计 java 药店药品信息管理系统 基于 Java 的药店药品管理平台Java 开发的药品信息系统
  • 解析电商本地生活竞争:从我店模式创新到生态协同的进化路径
  • AR智能巡检:市政设施管理的变革力量
  • OpenAI o1:OpenAI最新推出的AI大语言模型,更擅长推理也更贵
  • Mistral AI音频大模型Voxtral解读
  • 【IoTDB】时序数据库选型指南:为何IoTDB成为工业大数据场景的首选?
  • Java的四种优化资源密集型任务的策略
  • 【Linux】timerfd和POSIX定时器(timer_create)
  • 《C++ Primer 第五版》省略符号(...)
  • PHP学习笔记1
  • C#——SQLServer数据库入门
  • **FastAPI + Pydantic v2 + JSON‑RPC 2.0**,实现 A2A 规范核心方法
  • 什么是转入原注册商?
  • C++STL---count() 统计容器中特定元素出现次数
  • linux 正则表达式学习
  • 虚拟化技术 ——KVM
  • Redis常规指令及跳表
  • 机器学习--朴素贝叶斯
  • 零基础-动手学深度学习-13.1. 图像增广
  • 使用烛线图展示二进制01离散量趋势图
  • 嵌入式GPIO外设深度技术解析:从基础原理到高级应用
  • 开源 C++ QT Widget 开发(六)通讯--TCP调试
  • 微软恶意软件删除工具:官方免费的系统安全防护利器
  • CentOS安装Jenkins全流程指南
  • 3-1.Python 函数 - 函数基础(函数概述、函数的定义与调用、函数文档)
  • 8.25 朴素贝叶斯
  • [AI] Firebase Studio :AI+云端 IDE
  • C++深度优先搜素