我正在为CakePHP应用程序设置缓存,并且很难让它与Memcache通信。
我在针对基于文件的缓存引擎进行测试时编写了缓存代码,并且所有逻辑都是可靠的。当我观察调试流量时,缓存命中,错过并正常到期。我想切换到Memcache,因为基于Filesytem的缓存并没有真正提供任何性能改进,但我似乎无法让它工作。
一旦我将Cache :: config中的缓存引擎更改为Memcache,我就会收到以下错误:
Warning (512): Cache not configured properly. Please check Cache::config(); in APP/config/core.php [CORE/cake/libs/configure.php, line 663]
通过简单的配置调用就会发生这种情况,例如:
Cache::config('default', array(
'engine' => 'Memcache'
));
或者更复杂的一个,比如core.php中建议的默认值:
Cache::config('default', array(
'engine' => 'Memcache', //[required]
'duration'=> 3600, //[optional]
'probability'=> 100, //[optional]
'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
'servers' => array(
'127.0.0.1:11211' // localhost, default port 11211
), //[optional]
'compress' => false, // [optional] compress data in Memcache (slower, but uses less memory)
));
Cache.check设置为true,例如Configure::write('Cache.check', true);
并且未设置Cache.disable。同样,只要我使用'engine' => 'File'
,所有缓存逻辑都能很好地工作。
无论memcached是否正在运行,我都会遇到同样的错误。这个错误似乎包含了大量不同的问题 - 广泛的搜索已经揭示了这种错误信息的各种潜在解决方案。我已经仔细检查了我的tmp目录是否存在(每http://ryan.ifupdown.com/2009/08/05/warning-512-cache-not-configured-properly-please-check-cacheconfig-in-appconfigcore-php-corecakelibsconfigure-php-line-663/),我在Ubuntu上运行,因此没有路径问题(过去一直存在问题,每https://trac.cakephp.org/ticket/4433和{ {3}})。我正在运行一个相对旧版本的Cake(1.2.5),但我尝试升级并出现了相同的错误消息(以及其他一百万个其他与升级无关的错误,我没有时间去追捕。)
有没有办法从Cake获取有关实际出错的更多详细信息?我觉得这个错误只是缓存类初始化中出错的任何错误,并且存在大量潜在问题。将调试级别更改为3并不会显示任何更多信息。如果我能获得更多信息,我可以做一些事情,但我完全是盲目的。我是一个大多数新手Cake用户,所以对于处理奇怪的Cake bug的最佳实践的任何一般指导将非常感激!
答案 0 :(得分:3)
您需要安装PHP的Memcache lib。您应该能够使用“php5-memcache”包安装它。
答案 1 :(得分:1)
在Ubuntu 10.04上,我必须同时安装memcached AND memcache才能使其正常工作。
答案 2 :(得分:0)
通常这意味着内存缓存服务器实际上并未运行。您能否确保服务器在本地运行,并在端口11211上(这是默认设置)?
答案 3 :(得分:0)
您必须确保安装memcache
(不是“memcached
”)并且2)正在运行。
1)检查php.ini中是否存在extension=memcache.so
2)关注this instructions以自动启动memcache