2012-01-21 10 views
0

SQLから2〜3チャンクのデータを取得するページがあります。 これらのチャンクは約20種類の変数に分割されています。セッション変数は、複数のデータベースクエリに対してベストプラクティスを実行します。

あなたがナビゲートする各ページは、同じデータを繰り返し使用します。

質問:データと変数を毎回再確立、

iはセッション変数内のすべての変数を置くべきか、私は、各ページ上のデータベースを照会する必要があります。

一部のページでは、データベースとその後の変数が変更されます。

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

答えて

2

はい、キャッシュ機構を持つとよいでしょう。しかし、PHPのセッション変数は最良の解決策ではありません。 APCやMemCachedなどのキャッシングシステムを使用することもできますし、単純にハードディスク上のファイルに格納することもできます。

  1. 範囲:

    理由は、セッション変数を使用しません。あなたの変数の中にはセッションよりも広い範囲があるかもしれません。換言すれば、いくつかの変数は、異なるセッション間で共有されてもよい。

  2. 熱い負荷。 session_startすべてと呼び出すたびに、必要に応じて変数のシリアル化とロードが行われます。

+0

私はあなたの2つの提案を見ていきます。まだそれらを使用していないので、私はそれらを勉強する必要があります。回答いただきありがとうございます。 –

1

あなたは(それが大量のデータはありません、それは常にオーバーと何度も繰り返し使われていると仮定した場合)$_SESSION可能な限りのデータを格納する必要があります。

あなたの最大の問題は、データが変更されるとどうなるかということです。

if(rand(0,100) < 10){ 
    readSessionsFromPost(); 
} 

別の方法は、ローカルのファイルを変更し、mtimeを経由してすべてのリクエストでそれをチェックすることです(と$_SESSIONの最後の値を格納):次のようなコードで随時それらをリフレッシュすることがあります。または、使用することができます:

$time = $db->fetch_one('SELECT MAX(mtime) FROM pages'); 
strtotime($time) >= $_SESSION['time']; 

要約すると:

あなたが現在のデータを20リクエスト後に取得しても気にしない場合は、randと一緒に行くべきです(私は実際に気にしますが、これは決して使用しません:))。

ファイルアクセスを設定するアクセス権がある場合は、mtimeと変更された時刻を使用する必要があります(データベースでのリクエストは必要ありません)。

ユーザー数が少なく、サーバーのパフォーマンスに余裕がある場合は、毎回(またはデータが数秒ごとに変更されるとき)読み込むだけです。

キャッシュではオーバーヘッドが増えます。これらのデータのキャッシュがパフォーマンス上重要かどうかを判断する必要があります。

+0

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

関連する問題