2009-06-08 3 views

答えて

21

セッション変数はストレージメカニズムによってサポートされていることに注意してください。要求が完了するとセッションはセッションハンドラによって書き込まれます。デフォルトでは、これはファイルです。次のリクエストでは、そのファイル(またはセッションハンドラが使用するもの)からプルバックされます。

すべてのリクエストでこのデータを読み書きしている場合は、$ _SESSION変数を使用するだけで、データベースの接続、クエリおよび更新のオーバーヘッドはデフォルトの$ _SESSIONより速くなりません。

ロードバランシングされた複数のサーバーを実行していて、それらのセッション間でセッションデータを共有する必要がある場合は、たぶんデータベースバックアップセッションを使用することになります。この場合、データベースセッションのオーバーヘッドが目に見える程度にサイトの速度を低下させることがわかった場合は、Webサーバーとデータベースの間にmemcachedを置くことを検討することがあります。

+3

ロードバランサ先端の+1。 – foxybagga

1

効率的なものは、保存したいデータの量と一時的なデータで何をするつもりかによって異なります。私は、ファイルストレージにセッションデータに5メガバイトを保存することがありましたが、それは恐ろしいパフォーマンスキラーでした。しかし、5メグの国家はひどくたくさんあり、あなたは本当にそこに行くべきではありません。

とにかく、PHPのセッションをstored in a database tableに設定して、両方の世界のベストを得ることができます。

ただし、データがユーザーセッションの特徴ではない場合は、セッションを使用せず、代わりにいくつかのモデルオブジェクトを使用する必要があります。

+0

私は5MBとセッションデータは何かが間違っていたことを意味します。 :) –

0

PHPセッションはDBアクセスよりも高速です。しかし、PHPセッションにはknown issuesがあります。

PHPセッション管理の落とし穴を避けながら、本当に高速なアクセス時間を望むなら、memcachedを見たいかもしれません。

2

実際には、格納するデータの量と処理するトラフィックの量によって異なります。データが最小で、サイトが1つのWebサーバーを超えて拡張する必要がない場合は、セッションデータをWebサーバーのファイルシステムに書き込むデフォルトのセッションハンドラーを使用してください。

1つのボックスを超えて拡大縮小する必要がある場合は、セッションデータをmemcachedデータベースや通常のデータベースなどのメモリデータベースに格納することをお勧めします。 override the session handler in PHPを使用して、$ _SESSIONを使用しているときにデータベースに格納する独自の実装を作成できます。

3

私はデータベースやファイルからの読み方についてはあまりよく分かりませんが、「DBアクセスが他のものより遅い」とは言えません。学校のレッスンでは、ネットワークの待ち時間はI/Oアクセスと比較して無視できることが分かっています。セッションにDBを使用すると、いくつかの利点があります。

ファイルシステムが異なるため、多くのサーバーを心配する必要はありません。

また、データベースとの間で何かを読み書きすることは、ファイルシステムよりも簡単だと思います。

また、共有ホスティングを使用している場合は、データベースにセッションを格納することがセキュリティにとって大きな利点です。

もし私が間違っていたら、私を修正してください。私はまだ多くのことを学ぶ必要があります。ありがとう。