我有一个网站,用户可以搜索世界各地的酒店房间
我向某个服务器发出请求并检索xml响应
我解析每个xml并打印酒店,图像和房间组合(因为如果有人搜索单个房间和一个多功能厅和一个三人房我有更多的组合)。
好吧,问题是我可以检索很多很多酒店,每个酒店可以有更多类型的房间,如每个酒店5(有5种房间,我可以有7/8组合在PHP计算)。
< BR />
我把每个酒店和房间放在一个传递给我视图的数组中,这是我的数组构造函数(我有很多信息):
$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之后更好地拥有一个非常大的阵列,每次在Post中都有很多foreach和pass?
还有其他解决方案吗?
是关于架构的问题,以及如何存储(如果我必须存储数据),如何打印,如何管理大量数据我没有这方面的数据经验。
答案 0 :(得分:1)
重新说明你建议的解决方案:
您有多个数据提供商为您提供酒店客房列表。每次用户进行搜索时查询它们都需要很长时间,因此您希望将其列表缓存在数据库中。然后,您将查询本地数据库。
这似乎是一个好主意。确保从数据提供程序导入效果正常:删除旧列表,显示新列表等。确定更新本地缓存的频率。