mahone 发表于 2011-9-20 15:08:56

这算是ci的一个bug么?

ci version 2.0.3使用默认的memcache配置,代码有错误。


在目录system/libraries/Cache/Cache_memcached.php
该文件,_setup_memcached函数,第160到173行,如下:

if ( ! array_key_exists('hostname', $cache_server))
                        {
                                $cache_server['hostname'] = $this->_default_options['default_host'];
                        }
       
                        if ( ! array_key_exists('port', $cache_server))
                        {
                                $cache_server['port'] = $this->_default_options['default_port'];
                        }
       
                        if ( ! array_key_exists('weight', $cache_server))
                        {
                                $cache_server['weight'] = $this->_default_options['default_weight'];
                        }
感觉这里的代码$this->_default_options有问题,应该改成如下:
if ( ! array_key_exists('hostname', $cache_server))
                        {
                                $cache_server['hostname'] = $cache_server['default_host'];
                        }
       
                        if ( ! array_key_exists('port', $cache_server))
                        {
                                $cache_server['port'] = $cache_server['default_port'];
                        }
       
                        if ( ! array_key_exists('weight', $cache_server))
                        {
                                $cache_server['weight'] = $cache_server['default_weight'];
                        }
请大家讨论。。。

再问大家一个问题。在判断是否支持memcache的函数is_supported里,是这样判断
public function is_supported()        {
                if ( ! extension_loaded('memcached'))
                {
                        log_message('error', 'The Memcached Extension must be loaded to use Memcached Cache.');
                       
                        return FALSE;
                }
               
                $this->_setup_memcached();
                return TRUE;
        }
我还看到一个memcached函数库
其实有2个memcache函数库,名字也差不多
一个是memcache
另一个是memcached(这个也就是ci使用的)
两个函数库应该说功能应该也差不多。。。大家一般用哪个?(两个库在php文档中都有。。。看来都还可以。。。)
一开始我装了另一个库。。。怎么老说不支持。大家用的时候也要看仔细了。。。

visvoy 发表于 2011-9-21 00:33:22

memcache是PHP默认发行包包含的PECL链接mc的客户端
memcached是09年开发出来的(晚于没有d的)客户端,需要libevent支持
带d的客户端没有win版,要自己编译,而不带d的可以找到很多编译好的dll或so
据说带d的客户端速度快,我没有测试过,不清楚

mahone 发表于 2011-9-21 09:54:13

visvoy 发表于 2011-9-21 00:33 static/image/common/back.gif
memcache是PHP默认发行包包含的PECL链接mc的客户端
memcached是09年开发出来的(晚于没有d的)客户端,需要 ...

ok,了解。不过功能上来说,看php手册,带d的客户端功能比较多。。。
页: [1]
查看完整版本: 这算是ci的一个bug么?