赞片CMSOPcache

域名注册
域名注册 正式会员超兽战士 👑年卡会员
发布于 2026-10-07 21:35 ·1 浏览 ·0 回复

照着做完,你能给赞片CMS 打开 PHP 的 OPcache 加速,让首页和列表页的 PHP 执行时间明显下降,并且知道改完代码后怎么让缓存立刻生效、不生效时怎么排查。

第一步:确认 PHP 版本和 OPcache 现状

这一步要搞清楚你的赞片CMS 跑在哪个 PHP 版本上、OPcache 到底装没装,后面所有操作都依赖这个结果。

登录宝塔 Linux 面板(7.7 及以上版本),左侧点「网站」,找到赞片CMS 那个站点,点「设置」→「网站目录」,记住根目录路径,一般是 /www/wwwroot/你的域名。再点「网站」→「PHP版本」,看当前是 7.2 / 7.3 还是 7.4。

然后用 SSH 工具连上服务器,执行:

php -v
php -m | grep -i opcache

如果第二条命令有输出 Zend OPcache,说明扩展已经装了,可以直接跳到第三步;如果没有任何输出,就去第二步装扩展。

注意:php -m 查的是命令行(CLI)的扩展,网站跑的是 php-fpm,两者配置不完全一样。CLI 里看到不代表网站里生效,最终必须用第四步的网页方式验证。

第二步:在宝塔里安装 OPcache 扩展

这一步装扩展,装完 PHP 就具备了字节码缓存能力。

宝塔面板左侧点「软件商店」,在「已安装」里找到对应版本的 PHP(比如 PHP-7.4),点右边的「设置」。弹窗里切到「安装扩展」标签页,在列表中找到 OPcache,点「安装」,等进度条走完(一般 10~30 秒)。

注意:一定要选和网站当前使用的完全相同的 PHP 版本。给 PHP-7.4 装、网站却跑在 PHP-8.0 上,等于白装。

第三步:按赞片CMS 的负载调参数

这一步改 php.ini,让缓存内存、文件数够用,避免频繁淘汰缓存反而拖慢速度。

在 PHP-7.4 的「设置」弹窗里点「配置文件」,或者直接编辑 /www/server/php/74/etc/php.ini(把 74 换成你的版本号)。找到 [opcache] 段,改成下面这样:

zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=192
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20011
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.save_comments=1
opcache.fast_shutdown=1
opcache.max_wasted_percentage=10

几个关键项说明:memory_consumption=192 表示给 OPcache 192MB 内存,赞片CMS 文件多,低于 128MB 容易反复淘汰;max_accelerated_files=20011 是能缓存的 PHP 文件数量上限,取质数可以减少哈希冲突;revalidate_freq=60 表示每 60 秒检查一次源文件是否被改动。

注意:opcache.save_comments 必须保持为 1。ThinkPHP 系框架(赞片CMS 就是这一类)大量使用注释做注解解析,关掉它会导致部分功能直接报错。

第四步:重启 PHP 并验证生效

这一步让配置落地,并确认缓存真的在工作。

回到 PHP-7.4 的「设置」弹窗,点「服务」标签页,点「重启」;命令行等价操作是:

systemctl restart php-fpm-74

然后在网站根目录建一个临时文件 opcache_check.php,内容:

<?php phpinfo();

浏览器访问 http://你的域名/opcache_check.php,搜索 opcache,确认 opcache.enable 为 On。看完立刻删掉这个文件,别留着。

想看更细的命中率,可以用 opcache_get_status(),重点看 hits、misses、used_memory 三个值:命中率长期低于 90% 就把 memory_consumption 和 max_accelerated_files 再调大。

第五步:改代码后清缓存,避免改了不生效

这一步解决 OPcache 最常见的坑——你改了模板或 PHP 文件,网页上却还是旧的。

按默认配置,revalidate_freq=60 意味着最多 60 秒后自动生效,等一下刷新即可。如果是紧急修改,直接重启 php-fpm:

systemctl restart php-fpm-74

另外,赞片CMS 自己也有模板和数据缓存,位置在网站根目录的 runtime 目录下(ThinkPHP 系默认路径)。在宝塔「文件」里进入 /www/wwwroot/你的域名/runtime,删除 cache 和 temp 两个目录里的内容,然后在后台重新生成缓存。权限不对会报「目录不可写」,执行:

chown -R www:www /www/wwwroot/你的域名/runtime
chmod -R 755 /www/wwwroot/你的域名/runtime

注意:后台「清理缓存」和 OPcache 是两回事。后台清理的是业务缓存,OPcache 缓存的是 PHP 编译结果。只清后台缓存,PHP 文件被 OPcache 记住的旧版本仍然可能生效,两个都要处理。

第六步:出现异常时的回退方法

这一步给你一个兜底方案。

如果开完 OPcache 后网站白屏、后台报错,先把 opcache.enable 改成 0,重启 php-fpm,确认网站恢复正常,再逐项排查。内存给太小(比如 64MB)时,OPcache 会频繁整理缓存碎片,表现为网站时快时慢,这也是最常见的「开了反而更慢」的原因。

小结

  • 先确认站点实际使用的 PHP 版本,扩展要装在同一个版本上。
  • 赞片CMS 建议 memory_consumption=192、max_accelerated_files=20011,save_comments 保持开启。
  • 改完必须重启 php-fpm,用 phpinfo() 页面确认 opcache.enable 为 On。
  • 改代码后清两类缓存:重启 php-fpm(清 OPcache)+ 清 runtime 目录(清业务缓存)。
  • 命中率低于 90% 时优先加大内存和文件数上限,而不是直接关掉。
版权声明:本文来自 GJ站长论坛《赞片CMSOPcache》
原文链接:https://www.gj0.com/thread-563.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~