Yii MemCache 应用实例

1.建立表结构

CREATE TABLE IF NOT EXISTS `config` (
  `name` varchar(128) NOT NULL,
  `value` varchar(128) NOT NULL,
  KEY `name` (`name`),
  KEY `value` (`value`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='网站信息表';

首先要说明一下,由于网站名称,keyword等信息是单一调用,所以无需建立主键,或自增长ID,只要我们在保存或提取时进行二维拼装即可。下面会提供示例!

2.配置memcache

由于Yii可以配置多个cache的实例,所以调用起来非常方便,如其中一个配置是memcache,我们只需要Yii::app()->memcache->set($key,$value);即可完成memcache的写入

以下是配置实例config/main.php

'components'=>array(
    'memcache'=>array(
        'class'=>'CMemCache',
        'servers'=>array(
            array(
                'host'=>'127.0.0.1',
                'port'=>11211,
                'weight'=>60,
            ),
        ),
    ),
),

3.配置全站调用

如何配置全站都可以调用?因为我们每个Controller都继承了components/Controller,所以我们可以在这里配置一个全局数组的属性,即可在全站任何地方调用得到这个属性!

建立公共属性

public $global=array();

属性附值

public function init()
{
	$this->global = $this->setKey();
}

组装数组

	private function setKey()
{
	if(!Yii::app()->memcache->get('keywords'))
	{
		$cache = Config::model()->findAll();
		foreach($cache as $key=>$n)
		{
			$keys[$n->attributes['name']] = $n->attributes['value'];
		}			
		Yii::app()->memcache->set('keywords',$keys);
	}
	return Yii::app()->memcache->get('keywords');	
}

通过以上数组拼装,我们就可以得出如何拼装数组更新数据库了

OK,数据处理完成,我们现在只要在views/main.php调用相关数据即可,以keyword为例

<meta name="keywords" content="<?php echo $this->global['keywords'];?>" />

发表评论