最新消息: 新版网站上线了!!!

PHP CI APC 使用记录

今天用了APC来座位CI项目的缓存,记录一下!

APC 有两种缓存,可以缓存PHP的中间码opcode,和用户自己需要的数据到内存中。

http://pecl.php.net/package/apc 下载PHP 版本相对应的包

3.1.13 windows版本我PHP5.3版本有些notice级别的错误(可能只完美支持5.1和5.2),我其它地方找了3.1.10的windows版 可能是beta版本的问题,linux装得话还是装3.1.9好点

下好后放入php ext文件夹  php.ini 加入 

extension = php_apc.dll

apc.rfc1867 = on

apc.max_file_size = 100M

post_max_size = 100M

upload_max_filesize = 100M

apc.enabled =1

apc.stat = 0   //这里默认是1 每次访问都会检查文件是否有改动需要缓存,改为0,则不会检查,可以很大的提高效率,但是每次源代码改动就需要重启apache后者执行apc_clear_cache(),这个函数可以写在另一个新建的文本中执行。

 

CI 使用缓存,$this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));apc用作缓存,不支持apc的话,用文件缓存。我修改了system/libraries/Cache/Cache.php 的__get方法,感觉原先的__get有点错误,不然后备缓存方式用不到。

public function __get($child)

{

$obj = parent::__get($child);

if ( ! $this->is_supported($child))

{

$this->_adapter = $this->_backup_driver;

}

return $obj;

}

改成

public function __get($child)

{

$obj = parent::__get($child);//这个是返回了第一个cache 适配器,但是下面判断如果不支持第一个的话,则要到备用的cache适配器

if ( ! $this->is_supported($child))

{

$this->_adapter = $this->_backup_driver;

$child = $this->_backup_driver;

$obj = parent::__get($child);

}

return $obj;

}

转载请注明:谷谷点程序 » PHP CI APC 使用记录