系列之四:yii2 下使用memcached(非memcache) [ 技术分享 ]
php 的memcache 扩展有 memcache 和 memcached 两个 这里就不详细介绍这两个扩展的具体区别了,网上介绍很多
本人安装的是 memcached 详细安装步骤已经贴在本站:系列之三:php7.0下 安装 memcached 和 php扩展memcached
不过在使用过程中还是出现了一点点问题 其实yii2是支持两个扩展的,但是yii2还无法很智能的区别你用的是 memcache 或者 memcached 当时在SiteController.php 文件下做测试
先不适用YII2 的组件试一试
...
$mc = new \Memcached();
$mc->addServer("localhost", 11211);
//$mc->set("foo", "Hello!");
$val = $mc->get('foo');
var_dump($val);
...
能正常打印出结果
再用yii2 的组件
$cache = Yii::$app->getCache() ;
$cache->add('name','zhangsan');
出现这个结果:
Invalid Configuration – yii\base\InvalidConfigException
MemCache requires PHP memcache extension to be loaded.
已经安装了memcached 扩展为何还提示没安装,这个真搞不明白? 之后再回过头去看源码:MemCache.php
...
* MemCache supports both [memcache](http://pecl.php.net/package/memcache) and
* [memcached](http://pecl.php.net/package/memcached). By setting [[useMemcached]] to be true or false,
* one can let MemCache to use either memcached or memcache, respectively.
...
说明需要配置属性 [[useMemcached]] true:memcached , false:memcache
所以我没配置这个属性,useMemcached 为 false,所以Yii2 以为我使用的是 memcache
问题解决:
main-local.php
...
'cache' => [
'class' => 'yii\caching\MemCache',
'servers' => [
[
'host' => 'localhost',
'port' => 11211,
'weight' => 100,
],
[
'host' => 'localhost',
'port' => 11211,
'weight' => 50,
],
],
'useMemcached' => true ,
],
...
在此刷新site页面,没有错误提示了。 终端:
[root@localhost modules]# telnet 127.0.0.1 11211
get name
VALUE name 0 31
a:2:{i:0;s:8:"zhangsan";i:1;N;}
END
一切正常,yii2 可以使用memcached
共 3 条回复
-
admin_admin 回复于 2016-11-04 10:54 举报
写的不错 可以 前段时间被缓存坑了 yii 1.13的bug
qiuxis
注册时间:2016-10-31
最后登录:2017-10-25
在线时长:22小时6分
最后登录:2017-10-25
在线时长:22小时6分
- 粉丝21
- 金钱215
- 威望40
- 积分835