赞片CMSMemcached

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

照着这篇做完,你能让赞片 CMS 把数据库查询结果和数据缓存交给 Memcached 托管,站点在并发上来时不再动不动就卡。

第一步:先确认你的环境版本

赞片 CMS 是 PHP + MySQL 的 ThinkPHP 内核程序,缓存开关写在配置文件里,后台一般没有完整入口。所以动手前先把三件事确认清楚:PHP 版本(php -v,赞片常见是 5.6 / 7.0 / 7.2 / 7.4)、是否有服务器 root 权限、网站根目录下有没有 Application/Common/Conf/config.php 这个文件。

注意:赞片有多个发行版本,个别版本的配置文件路径是 Application/Common/Conf/config.php,也有的是 Application/Home/Conf/config.php。找不到就用 find /www/wwwroot/你的站点 -name "config.php" | grep Conf 搜一遍,别凭记忆改错文件。

第二步:安装 Memcached 服务端

这一步是在服务器上装缓存服务本体,装完你会得到一个监听 11211 端口的常驻进程。

CentOS / 宝塔环境:

yum install -y memcached
systemctl start memcached
systemctl enable memcached

Ubuntu / Debian:

apt install -y memcached libmemcached-tools
systemctl restart memcached

启动后验证:

telnet 127.0.0.1 11211

连上后直接敲 stats 回车,能看到 STAT curr_connections、STAT bytes 之类的输出就说明服务端活了。

注意:Memcached 默认无密码,绝对不要让它监听公网。启动参数里加上 -l 127.0.0.1,或者确保防火墙没放行 11211 端口。宝塔用户可在「安全」里检查 11211 是否被放行,放行了就删掉规则。

第三步:安装 PHP 的 memcached 扩展

这一步是让 PHP 能跟 Memcached 说话。装完你会看到 php -m 里多出一行。

宝塔面板路径:软件商店 → 已安装 → 找到你的 PHP 版本(比如 PHP-7.4)→ 点「设置」→ 左侧选「安装扩展」→ 找到 memcached → 点「安装」→ 装完点「重载配置」或重启 PHP。

命令行方式(需先装编译依赖):

yum install -y libmemcached-devel zlib-devel
pecl install memcached

然后在 php.ini 末尾加一行 extension=memcached.so,重启 php-fpm。

验证:

php -m | grep memcached

注意:memcache(无 d)和 memcached(有 d)是两个完全不同的扩展,装错一个,后面配置写法也完全不同。赞片 CMS 对应 ThinkPHP 的驱动名,Memcached 驱动要 memcached 扩展,Memcache 驱动要 memcache 扩展。优先装 memcached。

第四步:在赞片 CMS 里开启 Memcached 缓存

这一步是改配置,改完刷新前台页面,缓存就开始生效了。

打开 Application/Common/Conf/config.php,加入或修改以下项:

'DATA_CACHE_TYPE'   => 'Memcached',
'DATA_CACHE_PREFIX' => 'zp_',
'DATA_CACHE_TIME'   => 7200,
'MEMCACHED_HOST'    => '127.0.0.1',
'MEMCACHED_PORT'    => 11211,

说明:DATA_CACHE_TYPE 决定用哪个驱动,写错大小写会直接报错;DATA_CACHE_PREFIX 是多站点共用一台 Memcached 时的隔离前缀,每个站要不一样,否则会互相串数据;DATA_CACHE_TIME 单位是秒。

改完保存,然后清一遍编译缓存:

rm -rf /www/wwwroot/你的站点/Runtime/*
chmod -R 755 /www/wwwroot/你的站点/Runtime

再重启 php-fpm。

第五步:验证缓存到底有没有生效

这一步是确认钱没白花。打开前台首页访问几次,然后在服务器执行:

memcached-tool 127.0.0.1:11211 stats

看 curr_items 和 get_hits 两项,数字在涨,就说明赞片真的把数据写进去了。如果 curr_items 一直是 0,回检查配置文件路径是否被程序真正加载,以及 Runtime 目录权限。

第六步:清缓存和容量调优

Memcached 重启后数据全部丢失,这是它的设计,不是故障,前台会自动回源查库,不用慌。

手动清空的命令:

echo 'flush_all' | nc 127.0.0.1 11211

调整内存上限,编辑 /etc/sysconfig/memcached(CentOS)或 /etc/memcached.conf(Ubuntu),把 -m 改成 512 或 1024,然后 systemctl restart memcached。

注意:Memcached 只接管数据查询缓存,模板编译缓存仍然在 Runtime 目录里。后台改了模板或配置后,Runtime 该清还是要清,清 Memcached 解决不了模板不更新的问题。

小结

  • 先确认 PHP 版本和 config.php 真实路径,再动手改。
  • 服务端装 memcached,PHP 装 memcached 扩展,两者名称相同但完全是两回事,别装成 memcache。
  • 配置四个关键项:DATA_CACHE_TYPE、DATA_CACHE_PREFIX、DATA_CACHE_TIME、MEMCACHED_HOST/PORT。
  • 多站点共用时前缀必须区分,否则数据串站。
  • 11211 端口禁止对公网开放。
  • 清 Runtime 和清 Memcached 是两件事,别搞混。
版权声明:本文来自 GJ站长论坛《赞片CMSMemcached》
原文链接:https://www.gj0.com/thread-455.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~