web-dev-qa-db-ja.com

どのPHP(opcode)キャッシュを使用する必要がありますか、そしてその理由は?

PHP(opcode)caches like-APC、XCache、Memcache、eAccelerator、etc.について聞いています。

しかし、私はそれを選ぶ方法を理解することができませんでした。キャッシングシステムが提供することになっているパフォーマンス上の利点とは別に、他のどの要素も問題になるはずです。

XキャッシュシステムがYよりも優れていると言う理由は?相対的なパフォーマンスの向上についてはそれほど心配していません。 2つのシステム間の小さな違いはそれほど重要ではありません。

私の質問に対する一般的な回答が不可能な場合、ここにいくつかの指針があります。 Mediatempleで専用のVPSを使用しています(rootアクセス付き)。 RAMは512 MB(物理)+ 400MB(スワップ)です)WordPressとその従兄弟であるWordPress-MUとBuddyPressが心配です。コードの90%/サイトはWordPressファミリーに分類されます。

助けてくれてありがとう。

44
rahul286

リストした製品は、さまざまな目的で使用されます。

OPCodeキャッシュ

これにはたくさんのPHPアクセラレータ(OPCaches)があります Wikipediaリスト です。オープンソース製品と同じように、それらはすべてかなり似ています。XCacheはlighttp = PHPアクセラレータであり、そのHTTPdを実行しているときのデフォルトの選択です。これはApacheでもうまく機能しますが、APCは社会的に言えば「他の人とうまく機能している」ようで、公式にサポートされていますPHPの一部として、公式のPHPディストリビューションと並行してリリースされます。

開発が遅く、PHPのリリースに遅れがあったため、私はeAcceleratorを放棄し、APCが同様のパフォーマンスで提供する祝福された公式ステータスを放棄しました。

これらの製品は通常ドロップインです。コードを変更することなく、即座にパフォーマンスが向上します。大きなコードベース(Drupal、Wordpress)を使用すると、パフォーマンスは最大 になり、応答時間とメモリ使用量が削減されます。

データキャッシング

Memcacheは少し異なる製品です-軽量キー値システムと考えるかもしれません複数のサーバーにスケーリングされます。 Memcacheをサポートするにはソフトウェアを拡張する必要があり、特定の問題を他の問題よりも解決します。 Webサイトにリアルタイムの株価のリストがある場合、Memcacheを使用して、Webサイト全体に表示される現在の値の常駐リストを保持できます。これを使用して、短期間の再利用のためにセッションデータを保存できます。フルページキャッシュなどの他の用途や、MySQLの代替としては使用しません。

Wordpress WP-Super-Cache などのアドオンもあり、Wordpressのパフォーマンスを大幅に向上させることができます(インパクト、WP-Super-Cacheは、多くの場合)

まとめ-「設定したら忘れる、十分にサポートされている製品」が必要な場合は、APCを強くお勧めします。

33
SirStan

あなたの質問にうまく答える良い答えがstackoverflowに投稿されました。

https://stackoverflow.com/questions/28716/which-php-opcode-cacher-should-i-use-to-improve-performance

8

状況が少し変更され、APCがPHP 6コアに含まれないように思われることに注意してください。

APCは開発が遅いため、PHP 5.5と互換性がないように見えます。そのため、PHPからの連中がZend OPCache opcodeキャッシュを設定します。 PHP CORE拡張機能としての拡張機能です。詳しくはこちら http://wiki.php.net/rfc/optimizerplus をご覧ください。

重要な注意:Zend OPCacheにはAPCのようなユーザーデータキャッシュがないため、ユーザーデータキャッシュが必要な場合は、Memcacheと一緒に使用できます。

6
Nemke

[〜#〜] apc [〜#〜]はPHP6に組み込まれるので、論理的な選択です。私はそれを使用し、パフォーマンスの向上は驚くべきものです。オペコード以外のもの(つまり、dbクエリの結果)をキャッシュする必要がある場合も、APCを使用できますが、複数のサーバー間でAPCキャッシュを共有することはできません。単一のサーバーにキャッシュするだけでよい場合は、APCが最適です。複数のサーバーにスケールアウトする必要があり、それらのサーバー間でキャッシュを共有する場合は、memcachedが最適です。

ただし、私が行うことの1つは、実行するすべての(非opcode)キャッシング用のラッパークラスを作成することです。これにより、コードを変更せずにキャッシュエンジンを交換できます。

6
lo_fye

PHPバージョン少なくとも5.50を実行している場合、OpCacheが最善の策です(PHP/PECLネイティブライブラリ)。バイナリからインストールする場合は、プリコンパイルされているはずです。

http://php.net/manual/en/book.opcache.php

PHPバージョンを実行している場合、APC(PHP/PECLネイティブOpCodeキャッシュ)が最も簡単な選択ですが、メンテナンスされておらず、死んでいると見なされます。

http://php.net/manual/en/book.apc.php

PHP=のネイティブOpCache機能を使用すると、サードパーティのライブラリを維持する手間が省けます。

3
recurse

Memcacheは、オペコードではなく、キーと値のペアをキャッシュします。 opcodeキャッシュの1つと組み合わせて使用​​できます。

0
user10699