赞片CMSMemcache配置

juming
juming 正式会员超兽战士
发布于 2026-10-07 18:39 ·0 浏览 ·0 回复

照着做完,你就能把赞片CMS的缓存从默认的文件缓存换成 Memcache,减少数据库查询、明显降低页面打开时间。

第一步:确认 PHP 扩展有没有装

这一步要确认服务器上的 PHP 支持 Memcache,装不上后面全白搭。在 SSH 里执行:

php -v
php -m | grep -i memcache

php -m 会列出所有已加载扩展。如果输出里没有 memcache 或 memcached,说明没装。用宝塔面板的话,进「软件商店 → 已安装 → 找到你的 PHP 版本(比如 PHP-7.2)→ 设置 → 安装扩展」,在列表里找到 memcached 点安装,等它跑完。

注意:memcache 和 memcached 是两个不同的 PHP 扩展,驱动名不能混用。ThinkPHP 5.0 系列一般用 memcache,5.1 及以上用 memcached。装错的话配置写完会直接报「不支持的缓存类型」。

第二步:安装并启动 Memcached 服务

PHP 扩展只是「客户端」,还需要一个真正跑着的 Memcached 服务端进程。宝塔面板:软件商店 → 搜索 memcached → 安装 → 点「设置」,把端口设为 11211,内存按需要填(小站 256M~512M 足够)。

命令行安装(CentOS):

yum install -y memcached
systemctl start memcached
systemctl enable memcached

装完验证服务是否在监听:

ps aux | grep memcached
echo stats | nc 127.0.0.1 11211

第二条命令能刷出一堆 STAT 开头的行,就说明服务正常。

注意:启动参数里一定要绑 -l 127.0.0.1,别监听 0.0.0.0。Memcached 没有认证机制,暴露在公网上等于把缓存数据送给任何人。

第三步:找到赞片CMS的缓存配置文件

赞片CMS 基于 ThinkPHP 开发,缓存配置不在后台,而在代码里。用宝塔文件管理器或 SFTP 进入网站根目录(一般是 /www/wwwroot/你的域名/),按版本找文件:

  • ThinkPHP 5.0 结构:application/config.php,搜索 'cache';
  • ThinkPHP 5.1 及以上的结构:config/cache.php,或 application/extra/cache.php。

赞片CMS 常见做法是把缓存配置单独放在 application/extra/cache.php。找到包含 'type' => 'File' 的那个数组,就是它了。

第四步:改成 Memcache 配置

把原来的文件缓存配置整段替换成下面这样(注意驱动名要和第一步装的扩展对应):

'cache' => [
    'type'       => 'memcached',   // 装的是 memcache 扩展就写 'memcache'
    'host'       => '127.0.0.1',
    'port'       => 11211,
    'prefix'     => 'zanpian_',
    'expire'     => 3600,
    'persistent' => false,
],

几个参数的含义:prefix 是键名前缀,同一台服务器上跑多个站时用它区分,避免互相覆盖;expire 是默认过期秒数,3600 就是一小时;persistent 保持 false,长连接在部分环境下反而会出问题。

保存文件,如果服务器开了 OPcache,重启一下 PHP:宝塔「软件商店 → PHP-7.2 → 设置 → 服务 → 重启」。

第五步:清掉旧缓存并验证生效

改完配置后旧的 File 缓存还在磁盘上,不清会读到脏数据。宝塔文件管理器进 runtime/ 目录,删掉里面的 cache 文件夹(整个删掉,程序会自动重建);或者后台 → 系统 → 缓存管理 → 清除缓存。

验证是否真的用上了 Memcache:

echo stats | nc 127.0.0.1 11211

看 curr_items 这个数字。刷新几次网站首页,再执行一次,如果 curr_items 从 0 变成几十、几百,说明缓存已经写进 Memcached 了。

第六步:出问题怎么排查

  • 网站 500 或白屏:九成是驱动名写错,或 PHP 扩展没装。看 runtime/log/ 下当天的日志,会直接写明「不支持的缓存类型」。
  • 能打开但速度没变化:检查是否装了 OPcache 以外的页面缓存插件在抢活,或者模板本身没走缓存逻辑。
  • 多站点串数据:每个站点的 prefix 必须不一样。
  • 连不上 11211:确认 systemctl status memcached 是 running,以及宝塔「安全」里没屏蔽本地回环。

小结

  • 先装 PHP 的 memcache/memcached 扩展,再装 Memcached 服务端,两步都不能少;
  • 配置改在 application/extra/cache.php 或 config/cache.php,把 type 从 File 换成对应驱动;
  • prefix 一定要按站点区分,expire 按内容更新频率设置;
  • 改完必须清 runtime/cache,再用 curr_items 验证是否真的生效;
  • Memcached 只监听 127.0.0.1,别开公网端口。
版权声明:本文来自 GJ站长论坛《赞片CMSMemcache配置》
原文链接:https://www.gj0.com/thread-475.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~