0

ユーザーが世界中のホテルの部屋を検索できるサイトがあります。
サーバーにリクエストを送信し、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 を行う非常に大きな配列を使用する方が良いですか?

他の解決策はありますか?

アーキテクチャと、保存方法 (データを保存する必要がある場合)、印刷方法、大量のデータの管理方法に関する質問です。この量のデータの経験はありません。

4

1 に答える 1