2016-05-05 1 views
0

私はsymfonyをスピードの面で最適化する必要があります。ホスティングサーバーはphp 7.x.xを実行しており、opcacheは有効です。 apc_u拡張機能は無効になっていますが、本当に必要な場合は有効にするように頼むことができます。呼び出している私が今やっているsymfony 2.8の最適化:私はまだAPCClassLoaderを使用する必要がありますか?

私は私のアプリを展開するたびに
composer dump-autoload --optimize 

。そうすれば、アプリケーションはフォルダ全体を反復処理することなく、必要なすべてのマッピングを既に持っているはずです(右?)。 autoload_classmap.phpが既によく更新されている場合、ApcClassLoaderが私のパフォーマンスを改善できるかどうかは疑問です。

use Symfony\Component\HttpFoundation\Request; 

/** 
* @var Composer\Autoload\ClassLoader 
*/ 
$loader = require __DIR__.'/../app/autoload.php'; 
include_once __DIR__.'/../app/bootstrap.php.cache'; 

// Enable APC for autoloading to improve performance. 
// You should change the ApcClassLoader first argument to a unique prefix 
// in order to prevent cache key conflicts with other applications 
// also using APC. 
/* 
$apcLoader = new Symfony\Component\ClassLoader\ApcClassLoader(sha1(__FILE__), $loader); 
$loader->unregister(); 
$apcLoader->register(true); 
*/ 

$kernel = new AppKernel('prod', false); 
$kernel->loadClassCache(); 

長い質問短い:ここ

は私の app.php最初の行です autoload_classmap.phpはすでによく更新されている場合、私のパフォーマンスを向上させる ApcClassLoaderを有効にするだろうか?

答えて

4

ここに私の答えをお読みください:Why use a PSR-0 or PSR-4 autoload in composer if classmap is actually faster?

あなたが実際に増加または速度を減少させ、アプリケーション内のすべてのクラスのクラスマップをダンプするかどうかを評価する必要があります。クラスマップのダンプにクラスが多すぎると、opcodeキャッシュからメモリに巨大な配列を移動させることになります。これは、opcodeキャッシュには悪いことです(メモリに多少の負担がかかります)。スクリプトを実行するために必要なメモリ量。

一般的なルール:最適化する場合は、前もって最適化したいものを測定してから、何かを実行した後で測定して改善するかどうかを確認します。

「速度に関して最適化する」は、改善したいことの正確な説明ではありません。 1回のリクエストに対する応答時間ですか?それとも、負荷の重いサーバーの応答時間ですか?あなたは時間を費やす場所を見つけるためにアプリケーションを最初にプロファイリングしましたか?

オートローディングを「最適化」した後、APCに関連した解決策の1つについて、非常に具体的な質問をしていますが、正しく機能しているかどうかはわかりません。単に最適化することを約束したものを使用してください。

関連する問題