【问题标题】:What's the purpose of the Symfony2 bootstrap.php.cache file?Symfony2 bootstrap.php.cache 文件的用途是什么?
【发布时间】:2012-10-10 01:28:01
【问题描述】:

我在我们的一个遗留项目中使用 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 整个框架的话)。我以前没用过,没有问题,但我想知道这是否能给我带来一些性能提升等,我应该研究一下。我试图四处寻找,但找不到专门针对此主题的文档。

【问题讨论】:

    标签: caching symfony


    【解决方案1】:

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

    来源:Use Bootstrap Files

    【讨论】:

    • 所以我检查了引导文件,它看起来像是“引导程序”仅来自 Symfony\Component 包的类。 (pastebin.com/0ppmv2ke)。有没有办法“预加载”我项目的所有类以提高性能?还是不需要?
    • 我更信任 PHP 操作码缓存...在 PHP 7.0 之前它可能很有用,但现在你可能可以摆脱它了。
    【解决方案2】:

    来自Symfony documentation

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

    您可以像这样生成引导文件:

    php vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php
    

    【讨论】:

    • 你可以用 composer install 重新生成它
    【解决方案3】:

    引导缓存文件在开发过程中可能会令人烦恼,因为它会更改堆栈跟踪中的行号。幸运的是it can be easily disabledweb/app_dev.php

    【讨论】:

    • 该链接不再有效:​​(
    猜你喜欢
    • 1970-01-01
    • 2011-08-29
    • 2015-08-02
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    相关资源
    最近更新 更多