ユーザーが世界中のホテルの部屋を検索できるサイトがあります。
サーバーにリクエストを送信し、xml レスポンスを取得します。
私はすべての xml を解析し、ホテル、画像、および部屋の組み合わせを出力します (誰かがシングル ルーム、ダブル ルーム、トリプル ルームを検索すると、より多くの組み合わせがあるためです)。
さて、問題は、非常に多くのホテルを取得でき、すべてのホテルが各ホテルに 5 のようなより多くのタイプの部屋を持つことができることです (5 種類の部屋では、php で計算された 7/8 の組み合わせを持つことができます)。
ビューに渡されるすべてのホテルと部屋を配列に入れます。これが配列コンストラクターです (多くの情報をカットしています)。
$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) を作成し、ユーザー検索に対応する部屋の各組み合わせを計算する必要があります。
問題は、データを取得して印刷するのに 30 秒かかることです (多くの時間)。価格または場所によって、このアレイを多くのレベルで注文するのは非常に遅いと思います。毎回このアレイをポストで渡す必要があります.,
私は解決策を考えました:
すべてのデータをいくつかのテーブルのデータベースに保存します:ホテル、部屋、一部のホテルのみを表示(最大20)、注文する必要がある場合は、このテーブル内を検索する別のクエリを作成します(すべてのテーブルは検索ですまたは、この検索に対応する外部キーを持っている)。
その中にデータ検索を保存する良い方法はありますか? print または ios の後に、Post this で毎回多くの foreach と pass を行う非常に大きな配列を使用する方が良いですか?
他の解決策はありますか?
アーキテクチャと、保存方法 (データを保存する必要がある場合)、印刷方法、大量のデータの管理方法に関する質問です。この量のデータの経験はありません。