我與Laravel使用Memcached時有一個奇怪的問題。在我的本地環境中,我使用Windows,並且因爲沒有適用於Windows的Memcached,所以我在本地使用文件緩存驅動程序。對於生產服務器,我們安裝了Memcached,並使用不同的配置並使用Memcached驅動程序。代碼是一樣的。這是我與Memcached的問題。下面是一個簡單的代碼:與Memcached Laravel緩存問題
$cacheKey = "test_key";
$hasCache = Cache::has($cacheKey);
$value = "";
if($hasCache)
{
$value = Cache::get($cacheKey);
}
$isAdded = Cache::add($cacheKey, "test_value", 60);
$ isAdded始終是真實的(它應該是真實的,只有第一次),所以添加了緩存,但$ hasCache永遠是假,$值始終是空的。這就像它被添加到緩存後立即刪除值
本地它工作正常,問題只出現在生產服務器上。沒有例外拋出。我嘗試切換到生產服務器上的文件驅動程序,它的工作原理應該如此,所以問題在於memcached驅動程序。
我有很難調試這一點,所以如果任何人有類似的問題,我會很感激的幫助:)
不,$ isAdded不應總是如此。 Cache :: add()的文檔說:如果該項實際添加到緩存中,add方法將返回true。否則,該方法將返回false。 – Andrej 2014-08-29 14:14:43
我也嘗試過你的代碼,它再次在本地工作,但它不會在服務器上添加緩存。 Cache :: has($ cacheKey)再次返回false。 Memcached正在運行,否則會引發異常。我試圖禁用CPanel的擴展,當它被禁用時,我看到一個異常。 – Andrej 2014-08-29 14:18:19
這很奇怪。當然,Memcached的設置方式似乎有點不妥。你得到什麼你運行:看「回聲統計|數控127.0.0.1 11211」?你確定你正在運行memcached,而不是memcache?兩個不同的東西=) – Marcus 2014-08-29 17:49:08