php 的memcache 扩展有 memcache 和 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');
出现这个结果这个结果
已经安装了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