0

我有一个网站,用户可以在其中搜索世界各地的酒店房间。
我向某个服务器发出请求并检索 xml 响应。
我解析每个 xml 并打印酒店、图像和房间组合(因为如果有人搜索单人间、双人间和三人间,我会有更多组合)。
好吧,问题是我可以检索很多很多酒店,每家酒店可以有更多类型的房间,比如每家酒店 5 个(5 种房间我可以有 7 / 8 组合,用 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 秒来检索数据并打印它(很多时间)但问题是我必须插入许多其他提供程序(服务器以获取酒店然后更多的酒店)并且如果用户必须通过价格或按位置,我认为订购这个具有多个级别的数组非常慢,我每次都必须通过邮寄这个数组。,

我已经想到了一个解决方案:
将所有数据存储到某个表中的数据库中:酒店、房间和仅查看某些酒店(最多 20 个),如果我必须订购它,我会在该表中搜索另一个查询(每个表都是一个搜索或具有与此搜索相对应的外部键)。

将数据搜索存储在其中并在 print 或 ios 之后存储数据搜索的好方法是更好地拥有一个非常大的数组,其中包含许多 foreach 并且每次都在 Post 中传递?

还有其他解决方案吗?

是关于架构以及如何存储(如果我必须存储数据)、如何打印、如何管理大量数据的问题,我对这些数据量没有经验。

4

1 回答 1

1

所以改写你建议的解决方案:

您有几个数据提供商可以为您提供酒店房间列表。每次用户进行搜索时查询它们需要很长时间,因此您希望将它们的列表缓存在数据库中。然后,您改为查询本地数据库。

这似乎是个好主意。确保从数据提供者的导入工作正常:旧列表被删除,新列表出现等。计算您需要多久更新一次本地缓存。

于 2013-06-28T15:28:21.547 回答