2017-01-11 4 views
1

Symfony2のパフォーマンスを読むドキュメント:http://symfony.com/doc/2.8/performance.htmlSymfony2では、どのクラスパスキャッシュ方式がより優れていますか?ComposerクラスマップまたはAPCuを使用するApcClassLoader?

私は、クラス名のパスをキャッシュする方が良い解決策を見つけようとしています。私はPHP7を使用しているので、APCは利用できません。単にapcuとopcacheです。私は、キャッシュを実装する複雑さやWebサーバーを再起動する必要がありますが、これは最も効果的な問題ではありません。また、私がAPCオートローダーを使用する場合、app.phpコードは、まず作者autoload.phpをロードし、ApcClassLoaderを作成してから、初期オートローダーの登録を解除する必要があります。未使用のマップがあまりにも多くのメモリを浪費しないようにクラスマップをクリアすることは意味がありますか?つまり、実行する:composer dump-autoload --no-dev

答えて

0

の自動ロードの設定のための 'ゴールドスタンダード'は、symfonyのドキュメントの通りです:composer dump-autoload --optimize --no-dev --classmap-authoritativeです。

  • --optimizeすべてのPSR-0およびアプリケーションで使用されるPSR-4互換のクラスをダンプします。
  • --no-dev開発環境(テストなど)でのみ必要なクラスは除外します。
  • --classmap-authoritativeクラスマップに見つからないクラスについて、Composerがファイルシステムをスキャンしないようにします。

開発では、新しいクラスを作成するたびに少なくともcomposer dump-autoloadが必要になるため、このような最適化はおそらく多すぎます。

クラスマップがディスクに一度書き込まれてから読み込まれると、それはOpCache経由で利用できるようになります。そのため、PHPプロセス空間内にすでに有効になっているため、最大速度になります。

OpCacheの使用にある程度の速度を追加するには、キャッシュされたファイルの変更をチェックしないようにすることもできます。これは、opcache.validate_timestamps = falseを設定することでオフにすることができます。ファイルが変更された場合は、PHPサーバ(mod_phpを使用している場合はphp-fpmまたはApache)を再起動するか、そうでない場合はOpCacheキャッシュを無効にする必要があります。

関連する問題