web-dev-qa-db-ja.com

Memcache、APC、XCache、および聞いたことのない他の代替手段の違い

仕事で、私たちは最近、「大規模」なアプリケーションの設計を開始しました(1日に何百万ものヒットを処理できるように設計しています)。上級開発者の1人とシステム管理者がサーバーにmemcacheをセットアップしました。

私が理解しているように、Memcacheはクエリ結果と特定のテーブルをX時間メモリに保持し、すべてを厄介なものに保ちます。

Memcacheの欠点は、ローカルの開発環境で設定することができなかったことです。私はそれを自分でコンパイルする方法についていくつかの異なる指示に従いました。ほとんどの場合、すべての手順が正しく機能しているように見えますが、PHPLoadで次のエラーが発生します。

 [11-Sep-2010 16:02:30] PHP Warning:  PHP Startup: Unable to load dynamic library '/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/memcached.so' - dlopen(/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/memcached.so, 9): image not found in Unknown on line 0  

主な質問ではありませんが、偶然にも、SnowLeopardでMAMP1.9用のMemcacheをコンパイルできた場合は、その秘訣を教えてください。

私のprimaryの質問は、さまざまなWebキャッシングテクノロジーの違いについてです。 Memcache、APC、Xcache(ここでは: mysqlクエリの結果を手動でtxtファイルにキャッシュする )について言及しましたが、それぞれの長所、短所、違いはわかりません。

私の考えでは、Memcacheには、プロジェクトの主任開発者とシステム管理者が選択したものであるという利点があります。これには、Macでセットアップしてコンパイルするのにまったくのfoobarであるという欠点があります。 :-^)

他のキャシンテクノロジーのそれぞれ(または1つ)の長所と短所を列挙できる人から聞いてみたい人。それらはどこで最もよく使用され、どのように最もよく使用されますか。等々。

それはすべて私が思うに役立つ情報です。

私の知識を広げるためにあなたの時間を貸してくれてありがとう。 -アレックス。

21
Alex C

まず、 phpのオペコードキャッシャー のリスト。

2番目のMemcache/MemcacheDはオペコードキャッシャーではありません。分散メモリキャッシングシステムです。 PHPコードの速度/パフォーマンスは向上しません。データの保存にのみ使用できます。

APC、EAccelerator、XCacheなどは非分散型です。つまり、データはローカルWebサーバーにのみ保存できます。ただし、これらはすべてオペコードキャッシャーであり、PHPアプリのパフォーマンスを向上させることができます。EAccelerator(現在のバージョン)を除くほとんどの場合、データを保存することもできます。

私は通常、オペコードキャッシャーにAPCを選択します(これはPHP 6)のコアに含まれると報告されています)。ただし、サイトに複数のWebサーバーがある場合は、それも使用します。 MemcacheDの。


編集1MAMPでAPC、Memcacheをセットアップするのは非常に面倒であることに同意します。しかし、そのようなものを扱うチュートリアルがそこにあります。


編集2また、アプリに最適なオペコードキャッシャーに関しては、使用しているサーバーによって異なります。一部のシステムでは、より適切に機能するものもあります。また、キャッシャーのパフォーマンスに関しては、アプリのサイズと規模によっても異なります。


編集3非常に興味深い ここの記事 いくつかの異なるキャッシャーのパフォーマンスの比較について。 (この記事は2006年に書かれたようであり、現在の参照には実際には使用しないでください)

32
buggedcom

APCはオペコードキャッシュです。解析されたPHPコードが格納されるため、毎回PHPファイルを解析する必要はありません。

Memcacheはデータキャッシュです。データをキーと値のペアとして保存します。

3
kta