symfony 2.8 优化:我还需要使用 APCClassLoader 吗?
symfony 2.8 optimization: do I still need to use APCClassLoader?
我需要在速度方面优化我的 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();
long question short:如果 autoload_classmap.php
已经很好地更新,启用 ApcClassLoader
可以提高我的表现吗?
请在这里阅读我的回答:Why use a PSR-0 or PSR-4 autoload in composer if classmap is actually faster?
您必须评估在您的应用程序中转储所有 类 的类映射是否真的提高或降低了速度。如果在类映射转储中有太多 类,您最终会将一个巨大的数组从操作码缓存移动到内存中,这对操作码缓存来说都是不利的(它需要一些内存,这可能会踢出其他代码),以及 运行 任何脚本所需的内存量。
作为一般规则:如果您进行优化,请先衡量您想要优化的任何内容,然后在您做某事之后,看看情况是否有所改善。
另请注意,"optimize in terms of speed" 并未准确描述您要改进的内容。是单个请求的响应时间吗?还是服务器在重负载下的响应时间?您是否首先对应用程序进行概要分析以找出时间花在了哪里?
您问的是一个非常具体的问题,涉及与 APC 相关的一种可能的解决方案以改进 "something",在 "optimizing" 自动加载之后没有告诉我们它是否有效 - 这听起来好像您没有正确测量和分析您的应用程序,但只需使用您遇到的任何承诺 "optimize".
我需要在速度方面优化我的 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();
long question short:如果 autoload_classmap.php
已经很好地更新,启用 ApcClassLoader
可以提高我的表现吗?
请在这里阅读我的回答:Why use a PSR-0 or PSR-4 autoload in composer if classmap is actually faster?
您必须评估在您的应用程序中转储所有 类 的类映射是否真的提高或降低了速度。如果在类映射转储中有太多 类,您最终会将一个巨大的数组从操作码缓存移动到内存中,这对操作码缓存来说都是不利的(它需要一些内存,这可能会踢出其他代码),以及 运行 任何脚本所需的内存量。
作为一般规则:如果您进行优化,请先衡量您想要优化的任何内容,然后在您做某事之后,看看情况是否有所改善。
另请注意,"optimize in terms of speed" 并未准确描述您要改进的内容。是单个请求的响应时间吗?还是服务器在重负载下的响应时间?您是否首先对应用程序进行概要分析以找出时间花在了哪里?
您问的是一个非常具体的问题,涉及与 APC 相关的一种可能的解决方案以改进 "something",在 "optimizing" 自动加载之后没有告诉我们它是否有效 - 这听起来好像您没有正确测量和分析您的应用程序,但只需使用您遇到的任何承诺 "optimize".