0

IDを送信し、その代わりにphpがjsonノードをクライアントに送信するアプリを開発しています。私の質問は、下のコードに示すようにデータを静的php配列として保存するか、データを外部xml / jsonファイルに保存する必要がありますか、それともデータベースを使用する必要がありますか?配列には最大10,000個のアイテムがある可能性があります。提案してください。

<?php
    // Fill up array with names
    $a = array(
                array("id"=>1001, "name"=>"One", "address"=>"", "city"=>"", "state"=>""),
            array("id"=>1002, "name"=>"Two", "address"=>"", "city"=>"", "state"=>""),
            array("id"=>1003, "name"=>"Three", "address"=>"", "city"=>"", "state"=>""),
            array("id"=>1004, "name"=>"Four", "address"=>"", "city"=>"", "state"=>""),
            array("id"=>1005, "name"=>"Five", "address"=>"", "city"=>"", "state"=>""),
            array("id"=>1006, "name"=>"Six", "address"=>"", "city"=>"", "state"=>"")
            );

    //get the q parameter from URL
    $q=$_GET["q"];
    //lookup all hints from array if length of q>0
    if (strlen($q) > 0)
    {
        $hint="";
        $att = "id";
        for($i=0; $i<count($a); $i++)
        {    
           if($q==$a[$i][$att])
           {
              echo json_encode($a[$i]);
           }       
        }
    }
    echo "";
    ?>
4

3 に答える 3

0

それほど多くのレコードが必要な場合は、間違いなくデータベースを使用する必要があります。SQLite をチェックすることをお勧めします。これは非常にシンプルでコンパクトなデータベースです。スマートフォン向けのアプリかどうかはわかりませんが、そうであれば、SQLite は iOS と Android で利用できます。スマートフォンから Web サーバー、デスクトップまで、あらゆるものと互換性がある - 知っておくと便利な DB です。それに関する多くの優れたドキュメントもあります。Mozilla、Adobe、および Oracle が後援しています。http://www.sqlite.org/

于 2013-01-15T17:51:17.550 に答える
0

データベースの使用を強くお勧めします。最初は、ファイルを介して JSON 要素にアクセスする方が簡単だと思うかもしれませんが、何百ものレコードがある場合、特にデータを検索している場合は、扱いが難しい場合があります。JSON の使用に慣れている場合は、JSON-DB 環境などで動作するMongoDBを試すことができます。

于 2013-01-15T17:40:27.127 に答える
0

データベースは、許容できるパフォーマンスを備えた最も簡単なソリューションです。

1 秒あたり約 10000 を超えるリクエストを処理することが予想される場合、従来のデータベースはおそらく遅すぎるため、データをメモリに保持するプロセスの方が高速です。PHP はこの点で悪いことで有名です。実際、通常の Web サイトを実行する以外のほとんどのことには問題があります。ステートレスな性質により、デバッグが容易になりますが、アプリケーションが本質的にステートフルなものを主に扱う場合、対処するのは面倒です。PHP がその仕事に適したツールであるかどうか自問してみてください。たとえば、Node.js を使用すると、リストをメモリに保存することが直感的で簡単なソリューションになります。

一般に、選択するストレージ ソリューションに関係なく、基になるデータが頻繁に変更されない限り、提供する予定の JSON 文字列形式としてデータを格納するのが最も自然に思えます。

現在のコードには 2 つの大きな欠陥があります。

  • リストはコード内にあるため、PHP プロセスが開始されると、リクエストごとにリスト全体がロードされます。通常、新しいプロセスを頻繁に開始することはないため、他のほとんどの言語ではこれは大きな問題にはなりません。(一般的に、大量のデータをコードに入れるべきではありませんが、それは保守が難しくなる傾向があるためです。)
  • リスト全体をループして要求された項目を見つけ、 をidキーとして使用すると、次のようにほとんど時間がかからずに正しいレコードを取得できます。

.

$a = array(
    "1001"=>array("id"=>1001, "name"=>"One", "address"=>"", "city"=>"", "state"=>"")
)

//Get the requested record
$a[$q];
于 2013-01-15T19:30:38.057 に答える