跟屁虫 发表于 2012-1-28 21:59:06

我怎么尽遇到怪问题啊。。。

我用CI自带的缓存要出错啊,是按照手册来的啊

$this->load->driver('cache',array('adapter'=>'apc','backup'=>'file'));
if ( ! $foo = $this->cache->get('foo')){
    echo 'Saving to the cache!<br />';
    $foo = 'foobarbaz!';
    // Save into the cache for 5 minutes
    $this->cache->save('foo', $foo, 300);
}
echo $foo;

运行这段代码后:
Fatal error: Call to undefined function apc_fetch() in E:\wamp\www\myci\system\libraries\Cache\drivers\Cache_apc.php on line 41

这可咋整啊。。。。

Hex 发表于 2012-1-28 22:13:56

你要先安装 apc 扩展。。。
CI 只是一个 APC 扩展的封装而已。
要了解什么是 APC 请 google php apc

jeongee 发表于 2012-1-28 22:14:49

因为你不仔细看手册。
缓存那节一开始就有如下的话:
CodeIgniter提供了多种目前业界流行的快速动态缓存组件的封装类。除了基于纯文本的缓存(文件缓存)外,其他缓存组件均需对服务器环境进行正确配置才能使用,否则程序会抛出致命异常(Fatal Exception)错误。

ci_phper_mj 发表于 2012-1-28 22:33:30

看着英文完全可以理解这是什么意思了。

跟屁虫 发表于 2012-1-28 22:48:22

哦 原来是这样啊。。。。多谢各位了。。。{:1_1:}

☆淡定★ 发表于 2012-2-18 11:53:54

jeongee 发表于 2012-1-28 22:14 static/image/common/back.gif
因为你不仔细看手册。
缓存那节一开始就有如下的话:

首先加载缓存适配器,然后指定 APC 作为适配器优先使用的缓存实现,同时,我们指定文本缓存作为替代方案。这样,在一些服务器不支持APC的情况下(如国内的虚拟主机),我们可以使用替代方案保证程序正常运行。那这个怎么理解啊我也是这么写的   也是同样的错误

☆淡定★ 发表于 2012-2-18 11:55:09

jeongee 发表于 2012-1-28 22:14 static/image/common/back.gif
因为你不仔细看手册。
缓存那节一开始就有如下的话:

我确定我的php没配置过apc   但是这个
首先加载缓存适配器,然后指定 APC 作为适配器优先使用的缓存实现,同时,我们指定文本缓存作为替代方案。这样,在一些服务器不支持APC的情况下(如国内的虚拟主机),我们可以使用替代方案保证程序正常运行。

不应该理解为   如果使用这种方式如果不支持apc 那么系统会选择 文件缓存      ??????????????

Hex 发表于 2012-2-19 12:56:56

☆淡定★ 发表于 2012-2-18 11:55 static/image/common/back.gif
我确定我的php没配置过apc   但是这个
首先加载缓存适配器,然后指定 APC 作为适配器优先使用的缓存实现 ...
你理解错了,呵呵。
这里的意思是如果你的服务器不支持 APC,请选择文件缓存,文件缓存需要你设置,不是自动的。
具体请看手册。
例如这就是使用文件缓存:
$this->load->driver('cache');
$this->cache->file->save('foo', 'bar', 10);
请仔细理解什么是“适配器”

☆淡定★ 发表于 2012-2-19 20:22:32

Hex 发表于 2012-2-19 12:56 static/image/common/back.gif
你理解错了,呵呵。
这里的意思是如果你的服务器不支持 APC,请选择文件缓存,文件缓存需要你设置,不是自 ...

嗯嗯 好的 谢谢啊

80后 发表于 2012-7-16 19:40:31

Hex 发表于 2012-2-19 12:56 static/image/common/back.gif
你理解错了,呵呵。
这里的意思是如果你的服务器不支持 APC,请选择文件缓存,文件缓存需要你设置,不是自 ...

说的不对吧?
我看了他说是GET方法的时候,会调用__get方法,这个方法就是检查是否支持第一个缓存的,不支持的话就调用第2个缓存,但是我发现根本不会调用,BUG吧?
解决方法是在 Cache这个类里的_init****这个函数的底部调用 is_support这个函数。
传入的参数就是上面的那个 $this->{$param}
已经解决了。
页: [1] 2
查看完整版本: 我怎么尽遇到怪问题啊。。。