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.pswp.cn/pingmian/94353.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94353.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/94353.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux(从入门到精通)

Linux概述 Linux内核最初只是由芬兰人林纳斯托瓦兹1991年在赫尔辛基大学上学时出于个人爱好而编写的。 Linux特点 首先Linux作为自由软件有两个特点:一是它免费提供源代码,二是爱好者可以根据自己的需要自由修改、复制和发布源码 Linux的各个发行版本 Linux 的发行版说简单…

链表相关题目---19、删除链表的倒数第N个节点

题目链接&#xff1a;删除链表的倒数第N个节点 这道题 很常规的思路就是 先拷贝两次头结点 然后一个先走N步 然后同时开始走&#xff0c;直到先走N步的节点为空后&#xff0c;就停止&#xff0c;此时另一个没提前走的节点的下一个就是要删除的节点。不过需要注意的是&#xff0…

Vue工具类使用指南:实用函数与全局组件安装

概述在Vue项目开发中&#xff0c;我们经常需要一些通用的工具函数来处理路径转换、链接判断、数据格式化等任务。本文将介绍一个实用的Vue工具类&#xff0c;包含多种常用功能&#xff0c;并演示如何在项目中使用它们。工具函数详解1. 路径转驼峰命名import { pathToCamel } fr…

​Visual Studio + UE5 进行游戏开发的常见故障问题解决

从零开始&#xff0c;学习 虚幻引擎5&#xff08;UE5&#xff09;&#xff0c;开始游戏开发之旅&#xff01; 本文章仅提供学习&#xff0c;切勿将其用于不法手段&#xff01; 有些项目在 Visual Studio 的 Unreal Engine 集成配置界面中&#xff0c;涉及 ​Unreal Engine 与 V…

MiniCPM-V4.0开源并上线魔乐社区,多模态能力进化,手机可用,还有最全CookBook!

今天&#xff0c;面壁小钢炮新一代多模态模型 MiniCPM-V 4.0 正式开源。依靠 4B 参数&#xff0c;在 OpenCompass、OCRBench、MathVista 等多个榜单上取得了同级 SOTA 成绩&#xff0c;且 实现了在手机上稳定、丝滑运行。此外&#xff0c;面壁团队也正式开源了 推理部署工具 Mi…

FCT/ATE/ICT通用测试上位机软件

在当今智能制造与电子产品快速迭代的背景下&#xff0c;功能测试&#xff08;FCT&#xff09;已成为确保产品质量的关键环节。然而&#xff0c;传统的测试上位机往往存在扩展困难、功能固化、二次开发成本高等问题。为此&#xff0c;我们提出一款模块化、可扩展、可脚本化的 FC…

IndexTTS介绍与部署(B站开源的工业级语音合成模型)

语音合成效果非常好&#xff0c;可作为自己日常文本转语音使用工具&#xff01; 软件介绍 IndexTTS 是由哔哩哔哩&#xff08;B 站&#xff09;开源的工业级可控高效零样本文本转语音&#xff08;TTS&#xff09;系统&#xff0c;基于 XTTS 和 Tortoise 构建&#xff0c;采用 …

uniApp对接实人认证

前端代码部分<template><view class"wrap"><view class"box"><view class"item flex-row align-items-center space-between"><view class"name"><text style"color:#FF4D4D">*</te…

pytest 并发执行用例(基于受限的测试资源)

概要 本文主要介绍了如何在测试资源&#xff08;被测对象&#xff09;受限的情况下&#xff0c;使用 pytest 进行并发测试以减少总体测试时间的方法和过程。 背景 在软件开发过程中&#xff0c;我们通常使用测试用例来持续保证软件的质量&#xff08;例如&#xff0c;确保关…

结构化智能编程:用树形向量存储重构AI代码理解范式

结构化智能编程:用树形向量存储重构AI代码理解范式 告别暴力embedding,通过分层存储策略让AI精准理解百万行代码库 在AI编程助手日益普及的今天,开发者面临一个新的困境:当项目规模达到数万甚至数百万行代码时,传统的暴力向量化方法不仅效率低下,而且往往导致AI理解偏差。…

GPT5 / 深度研究功能 无法触发

具体表现为&#xff1a; 1.没有GPT5标识2.回答是GPT43.无法触发深度研究功能请问如何解决&#xff1f;

一键脚本:自动安装 Nginx + Certbot + HTTPS(Let‘s Encrypt)

创建脚本文件​&#xff1a; vi setup_nginx_https.sh脚本内容&#xff1a; #!/bin/bash# # 一键安装 Nginx Certbot HTTPS (CentOS 7) # 功能&#xff1a;自动安装 Nginx、Certbot&#xff0c;配置 HTTPS&#xff0c;自动续期 # 使用方法&#xff1a;./setup_nginx_https.s…

SpringAI与MCP

MCP是什么&#xff1f;MCP 服务 代理服务&#xff08;Proxy&#xff09; 标准化接口 自动化适配MCP 的目的&#xff0c;就是让 AI 应用不再“为每个工具定制对接 ”&#xff0c;而是像使用 USB-C 一样&#xff0c;“插上即用”任何外部工具。没mcp之前不同的工具入参和出参千…

Coze用户退出登录流程分析-后端源码

前言 本文将深入分析Coze Studio项目的用户退出登录功能后端实现&#xff0c;通过源码解读来理解整个退出登录流程的架构设计和技术实现。退出登录作为用户认证系统的重要组成部分&#xff0c;主要负责清理用户会话状态&#xff0c;确保用户账户安全。 退出登录功能虽然相对简单…

【应急响应工具教程】Unix/Linux 轻量级工具集Busybox

1、工具简介BusyBox 是一个将常用 Unix/Linux 工具打包在单一可执行文件中的轻量级工具集&#xff0c;被称为 “嵌入式 Linux 的瑞士军刀”。 它将多个精简版的命令行工具&#xff08;如 ls、cat、cp、mv、grep 等&#xff09;集成到一个二进制文件中&#xff0c;并通过不同的调…

【React】案例:B站评论

目录 一、核心功能实现 二、id处理和时间处理 三、清空内容并重新聚焦 一、核心功能实现 1.获取评论内容&#xff1a;表单受控绑定 2.点击发布按钮发布评论 二、id处理和时间处理 1.rpid要求一个唯一的随机数id -uuid库 npm install uuid 使用方法&#xff1a;import {v4 as…

sqlite创建数据库,创建表,插入数据,查询数据的C++ demo

sqlite的API可参考&#xff1a;SQLite – C/C | 菜鸟教程 sqlite的官网API可参考&#xff1a;Introduction #include <iostream> #include <sqlite3.h> #include <string>// 回调函数&#xff0c;用于查询结果的输出 static int callback(void* data, int …

部分CSS笔试题讲解

1. box-sizing: border-box 的作用问题&#xff1a; 默认的 CSS 盒模型 (content-box) 中&#xff0c;元素的 width 和 height 属性只指定了内容区域的尺寸。如果你给元素添加了 padding 或 border&#xff0c;这些值会被加在 width/height 之上&#xff0c;导致元素的实际占用…

雅菲奥朗SRE知识墙分享(二):『SRE对智能运维的升级模型』

SRE深度结合AI创新&#xff0c;雅菲奥朗专家刘峰老师总结了近期人工智能运维领域的突破&#xff0c;合计以下15个关键点:一、领域1&#xff1a;Dev&Ops 深度融合• 关键点1. 组织&#xff1a;Google “SREScale” 最新论文提出「单一故障域 单一 SRE 小组」原则&#xff0…

前端 Promise 全面深入解析

一、Promise基础概念 1、什么是Promise? Promise是一个表示异步操作最终完成或失败的对象。它允许你为异步操作的成功结果和失败原因分别绑定相应的处理方法。 2、Promise的三种状态 pending(等待中): 初始状态,既不是成功,也不是失败 fulfilled(已成功): 操作成功完…