17

I'm using SF2 in one of our legacy project, not the entire framework but by pulling in bundles and components I need. And I have always wondered about these lines of code:

$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();

I wonder what this bootstrap.php.cache file is for, what it is for, how it is generated (if I'm not using the SF2 whole framework). I didn't use it before, and there was no problem, but I wonder if this can give me some performance boost etc that I should look into. I tried to find all around but couldn't find a document dedicated to this subject.

4

3 回答 3

16

为了确保最佳的灵活性和代码重用,Symfony2 应用程序利用了各种类和第 3 方组件。但是在每个请求上从单独的文件中加载所有这些类可能会导致一些开销。为了减少这种开销,Symfony2 标准版提供了一个脚本来生成一个所谓的引导文件,该文件由单个文件中的多个类定义组成。通过包含这个文件(其中包含许多核心类的副本),Symfony 不再需要包含任何包含这些类的源文件。这将大大减少磁盘 IO。

来源:使用引导文件

于 2012-10-19T13:18:01.487 回答
10

来自Symfony 文档

为了确保最佳的灵活性和代码重用,Symfony2 应用程序利用了各种类和第 3 方组件。但是在每个请求上从单独的文件中加载所有这些类可能会导致一些开销。为了减少这种开销,Symfony2 标准版提供了一个脚本来生成一个所谓的引导文件,该文件由单个文件中的多个类定义组成。通过包含这个文件(其中包含许多核心类的副本),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 回答