2014-01-17 43 views
1

我有1000個對象,每個對象都需要一個「key」。

例如

$this->setItem("1", $object); 
$this->setItem("2", $object); 

我的問題是,每次我用$this->setItem()$this->addItem() Zend公司與.dat文件中創建一個新的文件夾。

我想只創建一個.dat所有對象的文件,但是我能夠與$this->getItem("key")

因此調用它,我問的是這兩個函數之間的區別?

當然我可以通過addItem()函數實現目標。

+0

只檢查了核心ZF代碼,他們完全相同的方式完全相同的事情。 – cptnk

回答

4

緩存的目的是以快速方式檢索緩存的結果。 如果ZF2將所有不同的緩存密鑰(及其數據)集中到一個文件中,那麼將無法快速提取數據,因爲所有昂貴的文件搜索/分割等都需要進行。 爲每個緩存鍵生成一個文件使這個過程變得簡單。 ZF2將創建緩存密鑰的MD5散列,並可直接從文件系統中檢索具有該名稱的文件。你看到的不同目錄只是哈希的一個子字符串,所以目錄的數量是有限的。

  • setItem將始終將數據寫入指定的鍵(如果數據已存在,則覆蓋)。
  • addItem只會在沒有數據的情況下寫入數據。
+0

非常感謝Bram,現在我能理解它。 :) – user2521436

+0

您能否請您將答案標記爲已接受。 –

相關問題