用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3554|回复: 2
收起左侧

[版本 2.x] 这算是ci的一个bug么?

[复制链接]
发表于 2011-9-20 15:08:56 | 显示全部楼层 |阅读模式
ci version 2.0.3使用默认的memcache配置,代码有错误。


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

PHP复制代码
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有问题,应该改成如下:
PHP复制代码
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里,是这样判断
PHP复制代码
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文档中都有。。。看来都还可以。。。)
一开始我装了另一个库。。。怎么老说不支持。大家用的时候也要看仔细了。。。
发表于 2011-9-21 00:33:22 | 显示全部楼层
memcache是PHP默认发行包包含的PECL链接mc的客户端
memcached是09年开发出来的(晚于没有d的)客户端,需要libevent支持
带d的客户端没有win版,要自己编译,而不带d的可以找到很多编译好的dll或so
据说带d的客户端速度快,我没有测试过,不清楚
 楼主| 发表于 2011-9-21 09:54:13 | 显示全部楼层
visvoy 发表于 2011-9-21 00:33
memcache是PHP默认发行包包含的PECL链接mc的客户端
memcached是09年开发出来的(晚于没有d的)客户端,需要 ...

ok,了解。不过功能上来说,看php手册,带d的客户端功能比较多。。。

本版积分规则