symfony 2.8优化:我还需要使用APCClassLoader吗?

时间:2016-05-05 13:17:14

标签: php symfony composer-php symfony-2.8

我需要在速度方面优化我的symfony。托管服务器正在运行php 7.x.x并启用了opcache。 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已经更新,可以启用x <- x[!(index(x) %in% index(y))] 来提高我的表现吗?

1 个答案:

答案 0 :(得分:4)

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

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

作为一般规则:如果您优化,测量之前想要优化的任何内容,那么在您执行某些操作之后,查看是否有所改进。

另请注意&#34;优化速度&#34;对您想要改进的内容并不十分准确。是单个请求的响应时间吗?或者是重负载服务器的响应时间?您是否首先对应用程序进行了分析以找出花费的时间?

您正在询问一个非常具体的问题,关于与APC相关的一个可能的解决方案,以便在&#34;优化&#34;之后改善&#34;某些事情&#34;自动加载而不告诉我们这是否有效 - 这听起来好像你没有正确测量和分析你的应用程序,而只是使用你所遇到的任何承诺来优化&#34;。