0

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

我现在正在做的是打电话:

composer dump-autoload --optimize

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

这是我的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();

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

4

1 回答 1

4

请在此处阅读我的答案:如果类映射实际上更快,为什么要在作曲家中使用 PSR-0 或 PSR-4 自动加载?

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

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

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

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

于 2016-05-06T18:12:05.433 回答