2010-09-13 109 views
2

我正在爲CakePHP應用程序設置緩存,並且很難讓它與Memcache對話。配置Memcache + CakePHP,「緩存配置不正確」錯誤

我在基於文件的緩存引擎進行測試時編寫了高速緩存代碼,並且所有邏輯都是穩定的。當我觀察調試流量時,緩存命中,未命中並正確過期。我想切換到Memcache,因爲基於Filesytem的緩存並沒有真正提供任何性能改進,但我似乎無法完全實現它。

只要我改變緩存的高速緩存引擎:: 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 is設置爲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/4433http://cakephp.1045679.n5.nabble.com/cake-1-2-problem-with-cache-td1302563.html)。我運行的是一個相對老版本的Cake(1.2.5),但我嘗試升級並且有相同的錯誤消息(以及與其他一百萬升級相關的錯誤,我並沒有真正有時間去追捕。)

有沒有什麼辦法可以從Cake中獲得更多關於實際出錯的更詳細信息?我感覺這個錯誤對於緩存類初始化中出現的任何錯誤都只是一個全面的錯誤,並且存在很多潛在的問題。將調試級別更改爲3不會再透露更多內容。如果我能得到更多的信息,我可能會做些事情,但我完全盲目。我是一個大多是新手的Cake用戶,因此任何關於處理奇怪的Cake錯誤的最佳實踐的一般指導將非常感謝!

回答

3

您需要安裝PHP的Memcache庫。您應該可以使用「php5-memcache」軟件包進行安裝。

+0

我已經安裝了該軟件包,但仍然無法識別它。我見過一些提到通過梨安裝它,我明天會嘗試... – drewww 2010-09-16 01:34:25

+0

您是否正確啓用它?我很確定你的問題與沒有安裝軟件包有關,因爲我自己也遇到了同樣的問題。檢查你的/etc/php5/conf.d/memcache.ini並確保擴展= memcache.so行沒有被註釋掉。 – giulianob 2010-09-16 13:46:59

+0

它在那裏,沒有註釋掉。 :/現在嘗試梨路線。 – drewww 2010-09-16 15:10:17

0

通常這意味着memcache服務器並未實際運行。你能確保服務器在本地運行,並在端口11211(這是默認的)?

+0

是的,雙重檢查這兩點。我在memcached日誌中沒有看到任何東西,但是 - 我應該是嗎?正常的連接嘗試會觸發日誌消息嗎?是否有其他方便的memcached客戶端可以用來確保memcache正常運行? – drewww 2010-09-13 20:06:28

+0

這是一個非常好的腳本,它模擬APC的memcache統計腳本。 http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/。它也會告訴你天氣memcache正在運行或不運行。 – JoeyP 2010-09-14 14:40:04

+0

啊,是的,那正是我所期待的。它顯示所有系統正常 - 連接到memcache罰款。不知道該怎麼做... – drewww 2010-09-14 15:46:26

1

在Ubuntu 10.04,我不得不同時安裝Memcached和內存緩存爲了得到它的工作。

0

你必須確保memcache(不是「memcached」)是1)安裝和2)運行。 1)檢查extension=memcache.so出現在php.ini 2)按照this instructions自動啓動memcache