WordPress启用Memcached动态缓存以及报错解决方案

LonelyMan 290 2020-04-03

引言

今天试着做了wp的加载优化,看到别人用Memcached来做php动态缓存方案,觉得挺不错的,就试了试

环境

我用的是宝塔面板,php版本为7.4,在php的安装拓展页面有memcached

就直接点了安装,几分钟后安装完成,软件页面就会多出Memcached

遇到问题

按照网上的教程进行了一番配置后打开主页却报错打不开

寻着最后一句话定位到了object-cache.php

  $this->mc[$bucket] = new Memcache();

根据CSDN的一篇文章可以看出,Memcached是依赖于Memcache的,但是在宝塔php扩展里却没有Memcache可以安装,所以我断定报错的原因是因为没有Memcache所导致的

解决方案

谷歌一番之后,发现关于Memcache的安装介绍少得可怜,只有一篇文章里给出了安装Memcache的脚本

运行脚本后显示如下内容

该文章是2016年发布的,显示的最新的php版本为7.0,而且我打开这个脚本文件发现它的memcache版本为3.0.8

而现在官方最新版本为4.0.5.2,所以便修改了代码,代码如下

~ wget -c http://pecl.php.net/get/memcache-4.0.5.2.tgz 
~ tar -zxvf memcache-4.0.5.2.tgz
~ cd memcache-4.0.5.2
~ /www/server/php/74/bin/phpize
~ ./configure  --with-php-config=/www/server/php/74/bin/php-config --enable-memcache --with-zlib-dir
~ make && make install
~ cd ..
~ rm -rf memcache*
~ echo "extension=memcache.so" >> /www/server/php/74/etc/php.ini
~ service php-fpm-74 reload

执行完上面的命令再打开wp主页就不会报错了,探针的显示也变正常了

注意

memcache.php文件中找到如下内容

define('ADMIN_USERNAME','memcache');    // Admin Username
define('ADMIN_PASSWORD','password');    // Admin Password
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);

$MEMCACHE_SERVERS[] = 'mymemcache-server1:11211'; // add more as an array
$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array

将上述代码中的最后一行去掉,把mymemcache-server1改成127.0.0.1,并更改第一行和第二行的账号和密码效果如下

define('ADMIN_USERNAME','admin');    // Admin Username
define('ADMIN_PASSWORD','zzzzzz');    // Admin Password
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);

$MEMCACHE_SERVERS[] = '127.0.0.1:11211'; // add more as an array

参考文章:

https://zhang.ge/5097.html

https://blog.csdn.net/txl13109187932/article/details/78520746

https://www.zmrbk.com/post-3407.html