Symfony と APC (代替 PHP キャッシュ) の出会い

WBOY
リリース: 2016-06-23 14:30:57
オリジナル
827 人が閲覧しました

PHP アクセラレータについて言えば、先週まで私はもっぱら XCache ユーザーでした。最近、symfony アプリケーションで APC を使用する必要がありました。 symfony は優れた APC 統合を提供するため、非常にスムーズに進みました。

PHP アクセラレーター (任意) を有効にするだけで、オペコードのキャッシュによりパフォーマンスが向上することに注意してください。そのため、常に運用環境で使用する必要があります。ほとんどのアクセラレータは、あらゆるものをキャッシュできる API も提供しています。

symfony の PHP アクセラレータ

symfony では最も人気のあるアクセラレータを活用するのは非常に簡単です。いくつかのファクトリのキャッシュ戦略 (ビュー、国際化、ルーティング) を変更できます。 Doctrine の DQL クエリと結果をキャッシュすることもできます。

Symfony は sfAPCCache クラスで APC サポートを提供するだけでなく、XCache (sfXCacheCache)、EAccelerator (sfEacceleratorCache)、memcache (sfMemcacheCache)、および SQLite (sfSQLiteCache) 用のドライバーも提供します。 sfCache クラスを拡張することで、独自のドライバーを非常に簡単に実装することもできます。

この短いチュートリアルは、他のアクセラレータにも使用できます。 sfAPCCache/Doctrine_Query_Cache を適切なクラスに置き換えるだけです。

ファクトリで APC を有効にする

すべてのキャッシュ戦略はデフォルトで sfFileCache に設定されます。ファクトリ ファイル (つまり、apps/frontend/config/factories.yml) でルーティング、ビュー、および i18n の設定を変更できます。

all:  routing:    class: sfPatternRouting    param:      generate_shortest_url:            true      extra_parameters_as_query_string: true      cache:        class: sfAPCCache        param:          automatic_cleaning_factor: 0          lifetime:                  31556926  view_cache:    class: sfAPCCache  i18n:    param:      cache:        class: sfAPCCache        param:          automatic_cleaning_factor: 0          lifetime:                  31556926
ログイン後にコピー

今後、ルーティング、ビュー キャッシュ、および翻訳は、ハードドライブの代わりにメモリ。このようにして、symfony はディスク操作 (遅い) を大幅に減らします。

Doctrine で DQL と結果キャッシュを有効にする

Doctrine でクエリ キャッシュを有効にすることは、非常に安全な操作です。準備されたステートメントを使用し、文字列の連結によってクエリを作成しない限り、心配する必要はありません。クエリキャッシュは、よく書かれたプロジェクトのほとんどで有効にできると思います。

symfony では、Doctrine はプロジェクト設定クラス (config/ProjectConfiguration.class.php) の configureDoctrine() メソッドで設定されます。クエリ キャッシュを有効にするには、ATTR_QUERY_CACHE 属性を設定する必要があります。

/** * @param Doctrine_Manager $manager * @return null */public function configureDoctrine(Doctrine_Manager $manager){  $manager->setAttribute(Doctrine_Core::ATTR_QUERY_CACHE, new Doctrine_Cache_Apc());}
ログイン後にコピー

ログイン後にコピー

結果キャッシュを有効にするのは難しい場合があります。それは本当にプロジェクトによって異なります。さまざまな結果セットの有効期間が異なる場合があります。また、急速に変化するデータを扱う場合、結果をキャッシュすることはできません (「一度取得すると古くなってしまう」ようなものです)。ほとんどの状況で、すべての結果キャッシュを有効にすることが最善の解決策とはなりません:

$manager->setAttribute(Doctrine_Core::ATTR_RESULT_CACHE, new Doctrine_Cache_Apc());
ログイン後にコピー

クエリ キャッシュと結果キャッシュの両方は、マネージャー レベルだけでなく、接続レベルとクエリ レベルでも有効にできることは言及する価値があります:

すごいです

Doctrine のドキュメントでは、クエリ キャッシュと結果キャッシュの両方について詳細な説明が提供されています: クエリ キャッシュと結果キャッシュ。

APC の将来

昔、私は XCache を選択しました。なぜなら、当時は XCache の方が保守性が高く、パフォーマンスに違いがなかったからです。現在、APC が積極的に開発されており、PHP コアに APC を含める計画があるため、自分の決定を再考する必要があります。

何を使用していますか?なぜ?ベンチマークを実行しましたか?

出典: http://www.zalas.eu/symfony-meets-apc-alternative-php-cache

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート