2012-01-06 6 views
3

私は、AJAXリクエストによって動的に入力される選択要素を持つWebページを作成しています。複数のデータベース接続なしで複数のAJAXリクエストをどのように行うのですか?

何らかのイベントが発生した場合、select要素は、実行時にデータベース接続を行い、データベースにクエリを行い、受け取ったデータで応答してselect要素を生成するスクリプトを要求します。各select要素は、別々のイベントで別々の要求を行います。

この場合、複数のデータベース接続が悪い考えであり、避ける方法はありますか?私はPHPとMySQLを使用しています。

+0

複数の接続は、接続の上限に達した数が多く、要求の開始に失敗した場合にのみ悪くなります。 –

答えて

0

1ページあたりまたは1回のリクエスト数が少ない場合は、それほど高額ではありません。その非常にビジーなページまたはサイトが接続プールを作成し、セッション間で共有する場合。

1つのこと:あなたの説明からは、そのページを即座にSQLを生成させるように思えます。これは注入攻撃のレシピのように聞こえます。あなたがそれを適用する前にAJAXを浄化することを確認してください。

+0

私は、ページごとに使用されるクエリの数を制限することが非常に重要であり、これは使用された結合の数よりも重要であると考えました。 – mtanti

+0

特定のページで使用されるクエリの数が気になる場合は、これをセッション変数にします。あなたはページが何をするかについて多くのことを言っていないので、これは多くのことが推測です。 – ethrbunny

2

複数の接続は害を及ぼしません。あなたのウェブサーバーとデータベースの種類によって異なる場合がありますが、hereのように、デフォルトの最大接続数は151です。この番号を超えるとToo many connectionsというエラーが表示されます。これは、使用可能なすべての接続が他のクライアントによって使用されていることを意味します。

許可される接続数は、 max_connectionsシステム変数によって制御されます。 Apache WebサーバーでMySQLを使用する場合、デフォルト値は151で、 のパフォーマンスが向上します。 (これまではデフォルトは100でした)。 接続をさらにサポートする必要がある場合は、この変数の値を大きく設定する必要があります。

データをフェッチして返す適切な接続を行う場合、これは数ミリ秒で実行する必要があります。そのため、すべてのクエリで作業中の151の同時オープン接続がある可能性は非常に低いです。

いいえ..これは問題ではありません。

+0

私は、ページごとに使用されるクエリの数を制限することが非常に重要であり、これは使用された結合の数よりも重要であると考えました。 – mtanti

+0

可能な限り最小限のクエリを実行する方がよいことは明らかです。したがって、同じテーブルから10個のフィールドを取得するために10個のクエリを実行するのではなく、それらをすべて1つのクエリに収める方が良いです。しかし、私はそれ自体について話すと思います。適切で最適化されたクエリを書くときに常識を使用する場合、接続の最大数は決して気にならないでしょう。 – Jules

関連する問題