2012-02-21 32 views
0

私はajaxベースのPHPアプリケーション(フレームワークなしなど)を持っています。PHPアプリケーションの起動時に1回限りのデータベースクエリ

データベースからいくつかのレコードを取得する必要があります(html select要素項目)。一度だけ、アプリケーションの起動時にPHP配列に格納し、将来のデータベース呼び出しを防ぐためにこの配列を将来使用できるようにします。すべての将来のユーザーのために。

私はBeanを初期化してSpringでこれを簡単に行うことができます。また、このBeanはアプリケーションスコープ(コンテキスト)を持つため、データを必要とするすべての将来のユーザースレッドに使用できます。つまり、データベースの取得はアプリケーションの起動時に1回だけで、一部のBeanはドロップダウンデータを永続的に保持します。

私はusecaseをPHPで複製する方法を理解できません。

最初のユーザーが自分のPHPファイルを実際に呼び出すまで、「アプリケーション」のブートストラップはありません。

さらに、アプリケーションコンテキストはありません。最初のユーザー用に取得されたレコードは、別のユーザーが利用できなくなります。

この問題を解決するにはどうすればよいですか? (メモ:memcacheなどのライブラリを使用したくないのですが)

+2

私はこの質問に混乱しています。静的データを取得して全員に使用したい場合は、なぜデータベースを使用していますか? – MetalFrog

+0

memcacheがないと、私は方法があるかどうか分かりません。 –

+0

PHPはスクリプト言語です。誰かがアプリケーションの起動としてカウントするページを要求するたびに、スクリプトが終了するとアプリケーションが終了します。 – jeroen

答えて

3

最初にアプリケーションを読み込むときだけデータを取得する必要があるのであれば、データベースからのデータを取得し、それらの値を必要とするhtmlページを書き換えます。次のユーザーが来ると、プログラムによって書き込まれた静的ページが表示されます。

ユーザーがあなたのアプリにヒットするたびにデータベースに1回コールするとあなたを殺してしまうのではないかと私は確信しています。たぶんあなたは良い理由があるのですが、1回以外のデータベースを避けてしまうのは、ちょっとばかげたIMOのようです。

0

訪問者1人あたりデータベースをヒットする必要がある場合は、$ _SESSIONを使用できます。スクリプトの開始時にセッションを開始し、データベースから値があるかどうかを確認します。そうでない場合は、ユーザーの最初の訪問であり、データベースを照会する必要があります。 $ _SESSIONスーパーグローバルにデータベース値を格納し、実行します。データがセッション内にある場合は、そのデータを使用し、データベースにクエリを実行しないでください。

それはあなたをカバーしますか?

+0

うん、ほとんど忘れてしまった!それは問題の60%を解決します。今、課題はアプリケーションレベルで、一度だけ、一度だけ行う方法を見つけ出すことです。基本的に、最初のユーザーのためのPHPスクリプトを呼び出すと、後にない。 Java/J2EEはこれをうまくカバーしています。とにかく、私が今やっていることがあなたが示唆していることがあります。 –

+0

これを実行する必要がある場合は、必要なデータをフラット・テキスト・ファイルに出力してスクリプトで読むことができますが、データベース・クエリーの方がはるかに高速です。このシングルトンクエリの要件はどこから来ますか?データベースが必要な解決策ではないかもしれません。 –

関連する問題