17

フレームワーク全体ではなく、必要なバンドルとコンポーネントをプルすることで、レガシープロジェクトの1つでSF2を使用しています。そして、私はいつもこれらのコード行について疑問に思っていました:

$loader = require_once __DIR__.'/../app/bootstrap.php.cache';

require_once __DIR__.'/../app/AppKernel.php';
//require_once __DIR__.'/../app/AppCache.php';

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

このbootstrap.php.cacheファイルは何のためにあるのか、何のためにあるのか、どのように生成されるのか(SF2フレームワーク全体を使用していない場合)疑問に思います。以前は使ったことがなかったので問題ありませんでしたが、これでパフォーマンスが上がるなど、調べてみるといいのではないかと思います。私はいたるところを見つけようとしましたが、この主題に特化した文書を見つけることができませんでした。

4

3 に答える 3

16

最適な柔軟性とコードの再利用を確実にするために、Symfony2アプリケーションはさまざまなクラスとサードパーティのコンポーネントを活用します。ただし、リクエストごとに別々のファイルからこれらのクラスをすべてロードすると、オーバーヘッドが発生する可能性があります。このオーバーヘッドを減らすために、Symfony2 Standard Editionは、単一のファイル内の複数のクラス定義で構成される、いわゆるブートストラップファイルを生成するためのスクリプトを提供します。このファイル(多くのコアクラスのコピーを含む)を含めることにより、Symfonyはそれらのクラスを含むソースファイルを含める必要がなくなります。これにより、ディスクIOが大幅に削減されます。

ソース:ブートストラップファイルを使用します

于 2012-10-19T13:18:01.487 に答える
10

Symfonyのドキュメントから:

最適な柔軟性とコードの再利用を確実にするために、Symfony2アプリケーションはさまざまなクラスとサードパーティのコンポーネントを活用します。ただし、リクエストごとに別々のファイルからこれらのクラスをすべてロードすると、オーバーヘッドが発生する可能性があります。このオーバーヘッドを減らすために、Symfony2 Standard Editionは、単一のファイル内の複数のクラス定義で構成される、いわゆるブートストラップファイルを生成するためのスクリプトを提供します。このファイル(多くのコアクラスのコピーを含む)を含めることにより、Symfonyはそれらのクラスを含むソースファイルを含める必要がなくなります。これにより、ディスクIOが大幅に削減されます。

次のようにブートストラップファイルを生成できます。

php vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php
于 2012-10-19T13:18:52.337 に答える
2

ブートストラップキャッシュファイルは、スタックトレースの行番号を変更するため、開発中にイライラする可能性があります。幸い、で簡単に無効にすることができますweb/app_dev.php

于 2013-05-29T18:31:01.830 に答える