2011-05-10 35 views
0

我想使用Memcached來緩存所有多語言字符串,而不是使用大數組來處理所有PHP頁面。memcached在時間之前過期

我做的,是從數據庫中讀取的已翻譯短語,並且在環路中的每個,我設置的memcached:

while (fetching database) {
$memcached->set($language.':'.$string_id, $translation, 0, 0);
}

的問題是,大多數(不是全部,似乎隨機)後自動「過期」,不知道爲什麼。
這些都是我的統計:

服務器的當前可用內存:1GB以上
總Memcached的空間:16MB
目前memcached的使用:2.66MB

的「驅逐」統計(已刪除項目爲可用內存新的項目)增加分配,當我運行週期。這對我來說沒有什麼意義,因爲我設置爲永不過期,並且memcached仍有很多可用空間。

有誰知道可能發生了什麼?
謝謝。

回答

1

0不是30天,它是0(即不過期)。

16MB是不夠的工作。你正在快速地吹掉你的一塊板,試圖將數據存儲到另一塊板上,而沒有任何空間。

如果你真的想要這個適合在16MB以內,你可以調整板,讓他們是一個固定的大小。只需要足夠的內存來處理您的各種數據大小,可能要容易得多。

+0

對不起,我現在注意到我在php.net中錯誤地閱讀了關於「0」是「30天」的內容。我在上面解決了我的問題,謝謝。無論如何,你能否解釋我(或給我一個鏈接)關於那些「板塊」的東西?語言短語不超過16MB,我相信!他們只有大約2MB。再次感謝你。 – Nuno 2011-05-10 07:52:07

+1

達斯汀,我發現這個:http://www.mikeperham.com/2009/06/22/slabs-pages-chunks-and-memcached/ - 它很好地解釋了我是什麼板。我明白你的意思了。謝謝! – Nuno 2011-05-10 15:35:42