2012-04-14 1 views
1

これは一般的な質問です。いつデータベースにデータベースをロードする

データベースの要素が多いページがあるウェブサイトがあります。 そしてこのページには、これらの要素を読み込んでいるスクリプトがあります。

私が知りたいことは、毎回ユーザーがクリックしてページをリロードすることを知っているので、データベースからページを再ロードすることです。

これを行うには適切な方法ですか?ウェブサイトの最初の読み込み時にinit.phpを作成し、$ _SESSIONに要素を格納するのと同じですか?

問題を説明できたかどうかわかりませんので、必要に応じて詳細をお尋ねください。

+0

問題は、ページがリロードされるたびにSQLクエリを実行したくないということです。 – Vamsi

+0

これはまさに私の問題です、はい! – FR073N

答えて

1

概念はかなりシンプルです。

新しいリクエストを送信する場合は、必要なときに常に新しい接続を開始し、完了したら新しい接続を閉じることをおすすめします。

ただし、接続や結果をSESSIONに保存しないでください。セキュリティ上の問題が発生する可能性があります。接続を閉じるために共通のスクリプトを作成することは、やり方です。

persistent connectionsで見ると、おそらくあなたが望むものでしょうか?

+0

私はセッションについて知りませんでした。だから私は自分がやっていることに行きます:接続を開始し、自分のものをやり、それを閉じます。 – FR073N

0

DBを接続することを意味する場合は、通常、「db_connect.php」のようなファイルを作成します。ここで、DBに接続して他のものを実行します。その後

、どこでも私はそれを含め、これで何かする必要があります:あなたが誤って二度それを含めることはできませんので

include_once "db_connect.php"; 

それは代わりにのinclude_onceを使用することが良いことだが、が含まれます。

SESSIONに保存しないでください!ファイルを含める方が良いです;)

+0

"db_connect.php"から取得した変数をどのように使用する予定ですか?そのファイルのスコープにロックされています。 –

+0

私はこの解決策を理解しています。しかし、もし私がページをリロードすると、データとDBへの接続は繰り返されますか? – FR073N

+0

はい、すべてが繰り返されます。それはいつものことです。毎回ロードしたくない場合は、キャッシュしてください。または、いくつかのトリガーを与える 真実:いいえ、それはロックされていません。もちろんそれを使うことができます。 – Blaskovic

0

私はセッションを避けるでしょう。

include_onceは、データベース接続ファイルを含めるための適切なオプションです。

include_once "db_connect.php"; 

も、あなたのファイルの最後に、あなたはまた、任意のデータベースの切断やクリーンアップを行い、別のファイルをインクルードすることもできます。

include_once "db_disconnect.php"; 

あなたのサイト上のすべてのPHPページでは、また、すべてのPHPページにデータベース接続を与えるデータベース接続のためのPHPのプリペンドfunctionalityyを使用することができることを知っている場合。

1

結果をセッションに保存しないでください。

ページが読み込まれるたびにクエリを実行したくない場合は、次のようないくつかのキャッシュ方法(クライアント側とサーバー側の両方)を使用できます。

Memcache

+0

毎回クエリを実行したくない場合、キャッシュは解決策です!私はあなたに感謝しており、私はそれを使用しようとします。 – FR073N

0

データベースの内容をセッションに保存することはお勧めしません。ただし、そのデータにセキュリティ上のリスクはなく、実際にはデータベース呼び出しを避ける必要があります。あなたは先に進んで$_SESSION配列に入れたり、クッキーを作成してそのデータを格納したりすることができます。データが非常に安全でないことがわかります。

また、SESSIONに格納されている情報の多くはサイトのメモリです。あなたの$ _SESSIONやクッキーをきれいにすることをお勧めします。

データベースコールは大したことではなく、秒を要し、より安全です。

データベース呼び出しを回避するためにデータを格納するもう1つの方法は、出力バッファリングを使用してファイルをキャッシュすることです。

+0

私はデータベース呼び出しが最も避けるべきものだと思っていましたが、私はそれに対して過度に反応したようです。 – FR073N

+0

ええ、彼らはそれほど悪くはありません。しかし、あなたがそれらを避けて、より速いスピードを得たいと思えば、私はコンテンツをキャッシングすることを考えます – Chief

関連する問題