0

ユーザーに価格とボリュームで動的に変化する市場を表示するために、2 秒ごとにデータベースからデータを取得する必要がある Web ページを作成しました。

次のコードを取得しました。

  $.ajax({
      type: "get",
      url: "getData.php",
      data: {
          item: 'H',
          type: 'price'
      },
      success: function (high) {

          $.ajax({
              type: "get",
              url: "getData.php",
              data: {
                  item: 'L',
                  type: 'price'
              },
              success: function (low) {

                  var dist = high - low;
                  // do something with the high and low prices... 
                  // keep retrieving data based on the high and low prices... 
                  //more ajax called are nested inside here...
              }
          });
      }
  });

このネストされた ajax 呼び出しにより、サーバーの CPU が過剰に使用されますか?

私の getData.php ファイルには、常に require_once('connect.php'); があります。データベースに接続します。「最大 mysql 接続数を超えています」というエラーが時々表示されるため、多くの mysql 接続が発生しますか? どうすれば修正できますか?同様の ajax 呼び出しをマージして parseJSON を使用しますか?

ありがとうございました。

4

2 に答える 2

1

データベースの場合と同様に、データベース自体がパフォーマンス上の主要な問題になるはずです。接続を増やす代わりに、データベースがサーバーに与えるサーバーへの影響を最小限に抑えることに取り組みます。

  • 可能であれば、クエリが適切にインデックス化され、インデックスが使用されていることを確認してください (テーブル スキャンではありません)。これをテストするには、explain ステートメントを使用します。場合によっては、データベース スキーマを少し変更するだけで大​​きな違いが生じることがあります
  • クエリがデータベース クエリ キャッシュにあることを確認してください。実際には、データが変更された場合にのみ実行されます。それ以外の場合、結果はメモリから出てくるはずです。このためには、クエリ キャッシュを十分に大きくする必要があり、Mysql 関数など、注意が必要なクエリ条件がいくつかあります。
  • クエリを単純化する方がよい場合があります。より大きなクエリはそれ自体でうまく機能する可能性がありますが、それらを分割すると、より多くのクエリがクエリ キャッシュから提供される可能性があり、通常は単独でより短く実行されます。

これが役立つことを願っています。これについてさらにヘルプが必要な場合は、おそらくいくつかのサンプル クエリとモデルを投稿する必要があります (おそらく dba.stackexchange.com に投稿します)。

于 2013-10-19T03:18:58.583 に答える
0

これらの AJAX 呼び出しをどのようなコンテキストで使用しているかはわかりませんが、AJAX 呼び出しはループではないため、他の AJAX 呼び出し内に AJAX 呼び出しをネストしても、I/O の使用量が増えることはありません。あなたは本質的に同じことをしています

$.ajax{
    //do something
}
$.ajax{
    //do something else
}

ただし、2 番目の呼び出しを開始するために満たす条件を要求している場合を除きます。

MySQL の「my.cnf」ファイルを編集して、発生しているエラーを取り除きたいとします。

max_connections = 100

ここのデフォルト値は 100 です。AJAX モンスターを実行しているように聞こえるので、これをより大きな数値に変更してください

于 2013-10-19T03:04:22.160 に答える