【问题标题】:symfony 2.8 optimization: do I still need to use APCClassLoader?symfony 2.8 优化:我还需要使用 APCClassLoader 吗?
【发布时间】:2016-08-31 07:18:30
【问题描述】:

我需要在速度方面优化我的 symfony。托管服务器正在运行 php 7.x.x 并启用了 opcache。 apc_u 扩展已被禁用,但如果真的需要,我可以要求启用它。

我现在正在打电话:

composer dump-autoload --optimize

每当我部署我的应用程序时。这样,应用程序应该已经拥有所有需要的映射,而不必遍历文件夹(对吗?)。我想知道如果autoload_classmap.php 已经得到很好的更新,ApcClassLoader 是否可以提高我的表现。

这是我的app.php 第一行:

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

简短的问题:如果autoload_classmap.php 已经得到很好的更新,启用ApcClassLoader 可以提高我的表现吗?

【问题讨论】:

    标签: php symfony composer-php symfony-2.8


    【解决方案1】:

    请在此处阅读我的回答:Why use a PSR-0 or PSR-4 autoload in composer if classmap is actually faster?

    您必须评估转储应用程序中所有类的类映射是否实际上会提高或降低速度。如果类映射转储中有太多类,最终会将一个巨大的数组从操作码缓存移动到内存中,这对操作码缓存不利(它需要一些内存,这可能会踢出其他代码),并且对于运行任何脚本所需的内存量。

    作为一般规则:如果您进行优化,请在之前测量您想要优化的任何内容,然后在您执行某项操作之后,看看情况是否有所改善。

    另请注意,“在速度方面进行优化”并不是对您想要改进的内容的非常准确的描述。是单个请求的响应时间吗?还是服务器在重负载下的响应时间?您是否首先对应用程序进行了概要分析,以了解时间花在了哪里?

    您问了一个非常具体的问题,即与 APC 连接的一种可能的解决方案以改进“某些东西”,在“优化”自动加载之后没有告诉我们这是否有效 - 这听起来像是您没有正确测量和分析您的应用程序,但只需使用您遇到的任何承诺“优化”的东西。

    【讨论】:

      猜你喜欢
      • 2021-10-24
      • 2020-07-01
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      相关资源
      最近更新 更多