我正在尋找一種方法來防止數據庫重複調用,如果有問題的項目已經被加載過。原因是我們有很多不同的區域顯示流行的項目,最新的版本,最受歡迎的項目等,有時會發生一個項目出現在同一頁面上的多個列表中。減少php網店的數據庫調用
我不知道是否有可能將對象實例保存在與類關聯的靜態數組中,然後檢查數據是否實際存在,但是如何將新實例指向現有的實例?
這裏是我的想法的草案:
$baseball = new Item($idOfTheBaseballItem);
$baseballAgain = new Item($idOfTheBaseballItem);
class Item
{
static $arrItems = array();
function __construct($id) {
if(in_array($id, self::arrItems)){
// Point this instance to the object in self::arrItems[$id]
// But how?
}
else {
// Call the database
self::arrItems[id] = $this;
}
}
}
如果您有任何其他的想法,或者你只是覺得我完全堅果,讓我知道。
正如你所說這是受歡迎的物品,我想它對所有用戶都是一樣的,對嗎?然後,您可以將它緩存在XML或其他內容中,並且您的頁面將從XML讀取,這比查詢數據庫要快得多。您可以計劃您的應用更新XML的頻率。 – Andre 2011-04-08 12:49:11
嗨安德烈,是的大多數列表確實是所有用戶相同。我不知道從文件讀取比查詢數據庫要快(這是MSSQL!),我一定會試一試。 – Alexis 2011-04-08 13:10:26
是的,速度更快,因爲文件將按照您希望顯示的順序進行組織,使用的內存更少,並且您可以將數據庫移動到其他服務器而不會損失性能。順便說一句,我也會研究這個memcache類@Khez說。 – Andre 2011-04-08 14:22:16