2012-02-23 13 views
7

明らかな違いは、memcache(d)に保存されているデータがシステムを横切って利用可能になるということです。セッションはユーザーごとにデータを格納しますが、このデータをより多くのユーザーと共有するには理論的にはsession_id()を使用できます。

ただし、パフォーマンス、スピード、メモリ使用量の点で違いはありますか?

+0

あなたは_SESSIONが記憶されていないことを忘れてしまいました。 –

+0

@rdlowrey、Wow。誰があなたにファイルシステムがmemcache(d)によって提供されるメモリ内の記憶域よりも遅いとあなたに言ったのですか?ハードウェアがSSDであるかどうかは考慮されていません。 – Gajus

+0

Memcacheが高速であると示唆している人は、ローカルのMemcacheサーバー(アプリケーションと同じマシンにインストールされている)を想定しているようです。これは、ネットワーク上で使用される場合、ネットワークに非常に依存する可能性があります。 –

答えて

5

PHPセッションはデフォルトでファイルシステムに保存されます。この動作を変更して、データベースまたはあなたのケースのmemcachedに保存することができます。

パフォーマンス上、memcachedはであり、ファイルシステムよりも一般的にはです。 これはお使いの環境によって異なります。

session_set_save_handler

+0

ファイルシステムがmemcachedよりも遅いことを示すソースを共有してください。 – Gajus

+3

@Guy明らかにそれはあなたのハードウェアとそれぞれのハードウェアへの負荷によって異なります。 *一般的には、7.2k RPMのHDDがあなたのメモリよりも遅いことがわかります – Vitamin

+5

@Guy - ハードディスクドライブがランダムアクセスメモリよりも遅いことを説明する "リソース"が本当に必要ですか?はいの場合は、wikipediaでいくつかの数字をチェックしたり、hddとラムを比較してみてください。簡単な事実:ラムアクセス時間はナノ秒単位で測定され、データレートはギガバイト単位(32ギガツは現在取得可能)であり、ssdはマイクロ秒のシーク時間で約500メガバイトに達するものと比較できません。 –

0

まあ、$_SESSIONの場合は単にmemcacheを使用できます。これは、PHP APIへの多くの呼び出しを必要としないので、はるかに高速ですが、代わりにC APIに直接移行します。

PHPのパフォーマンスはわずかですが、実際にはそれほど遅くはありません。

memcacheとファイルシステムセッションを比較する場合は、memcacheを使用します。実際には、ファイルシステムに格納するのではなく、メモリに格納するだけです。ずっと速い。もちろん、memcacheサーバーが過負荷になると、セッションデータが失われる危険性があります。もちろん、memcacheのメモリ使用量は、ファイルシステムの代替量よりも高くなります。

+0

私は間違っているが、Cで作成されたPHP API/Extensionsではない場合は私を訂正しますか? – Bot

+0

はい、そうですが、 '$ _SESSION'置換の代わりにセッションを保存するために未処理のmemcache関数を使用したい場合は、PHPがあなたが行うすべての関数呼び出しを解釈してルックアップする必要があるため、やや遅くなります。 –

0

セッションは、ファイルまたはデータベースに格納されている参照してください。 Memcacheは、より高速にアクセスできるようにメモリに格納されています。

2

リンゴとオレンジ。彼らは全く異なる2つのことを達成します。あなたの本当の疑問はファイルストレージとmemcacheです。理論的には、ファイルベースのストレージの代わりにセッション情報をmemcacheに格納することができます。セッションのパフォーマンスは、直接memcacheに値をプッシュすることと同じになります。

すべてが同じであるため、memcacheはファイルキャッシュよりもはるかに優れています。メモリに関しては、データを取得するためにファイルを読むと(この場合はセッションファイル)、それは何とかメモリに格納されるため、スペースを節約することはできません。実際に複数のリクエストがApacheに発生した場合、異なるワーカープロセスは同じセッションファイルを読み取る必要があります。それぞれは、ワーカープロセスが刈り取られるまで独自のメモリチャンクを使います。 memcacheを使うと、これは起こりません。


関連する問題