我有一個網站,用戶可以在世界各地搜索酒店房間。
我向某個服務器發出請求並檢索xml響應。
我解析每一個XML和打印酒店,圖像和房間的組合(因爲如果有人搜索一個房間,dobule房間和一個三人間我有更多的組合)。
嗯,問題是,我可以檢索許多和許多酒店,每個酒店可以有更多類型的房間,每個酒店5(5種房間我可以有7/8組合計算在php中)。
PHP中大數據的體系結構
我把每一個酒店和房間在傳遞給我的看法數組,這是我的數組構造(我有切口的很多信息的):
$hotel = array();
foreach ($xml->DATA as $entry){
foreach ($entry->HOTEL_DATA as $entry2){
$id = (string)$entry2->attributes()->HOTEL_CODE;
$hotel_array2 = array();
$hotel_array2['id'] = $id;
$hotel_array2['currency'] = (string)$entry2->attributes()->CURRENCY_CODE;
$i=0;
foreach($entry2->ROOM_DATA as $room){
$room_array = array();
$room_array['id'] = (string)$room->attributes()->CCHARGES_CODE;
$room_array['code'] = (string)$room->attributes()->ROOM_CODE;
$room_array['name'] = utf8_decode($room->ROOM_NAME);
$hotel_array2['rooms'][$i] = array($room_array);
$i++;
}
if (!isset($hotel_array[$hotel_array2['id']])) {
$hotel_array[$hotel_array2['id']] = $hotel_array2;
} else {
$hotel_array[$hotel_array2['id']]['rooms'] = array_merge($hotel_array[$hotel_array2['id']]['rooms'], $hotel_array2['rooms']);
}
}
}
}
return ($hotel_array);
要打印此陣我有在裏面做一些foreach(大約3,4),並計算與用戶搜索相對應的每個房間組合。
該oriblem是,我花30秒檢索數據並打印它(很多時間),但問題是,我不得不插入許多其他提供者(服務器採取酒店,然後更多的酒店),如果一個用戶必須按價格或按位置來統籌,訂購此陣有許多水平是非常緩慢,我認爲,我必須郵寄這個數組每一次傳球,
我也鑫卡特的解決方案:
存儲的所有數據到一些表中的數據庫:酒店,房間和viuew只有一些酒店(最多20個),如果我必須訂購它,我可能會在此表中搜索另一個查詢(每個表都是搜索或具有與此搜索相對應的外部關鍵字)。
是一個很好的方式來存儲它內部的數據搜索和打印後或ios更好地有一個非常大的數組woth許多foreach並通過每一次Post中?
是否有其他解決方案?
是一個關於架構和如何存儲(如果我必須存儲數據),如何打印,如何管理大量數據的問題,我對這些數據量沒有經驗。
你可以在每個調用的基礎上檢索和存儲在數據庫中,所以第一次調用將是緩慢的下一個將是從本地數據庫(與memcached和mysql相同的主體),你也可以只需緩存的XML文件+請求,以便您可以加載本地副本,而不是每次都再次執行遠程請求,如果它不存在請求它。您可以將處理移至主應用程序之外的計劃引擎,並在用戶完成搜索時提醒用戶。或者,您可以做其他比較網站的工作,並在搜索結束時顯示「請稍候」樣式的屏幕。 – Dave
大多數網站使用分頁。這意味着當你從服務器請求酒店時,它只會給你前10(或左右)的XML,然後當用戶想要更多的時候加載下一個10等。 – chrislondon
不是possbile我必須從XML檢索所有數據因爲不是按照價格的順序@chrislondon – WebDesigner