改进Composer自动加载includeFile在Symfony



我在Symfony 2.8项目上做了Blackfire测试,它显示大部分时间(超过50%)被435个Composer autolload includeFile调用使用

有什么改进的建议吗?在我为prod清除缓存后,我使用php composer.phar dump-autoload --optimize

我使用APC的元数据和查询缓存学说和我的app.php文件看起来像这样:

<?php
use SymfonyComponentHttpFoundationRequest;
/**
 * @var ComposerAutoloadClassLoader
 */
$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 SymfonyComponentClassLoaderApcClassLoader(sha1(__FILE__), $loader);
$loader->unregister();
$apcLoader->register(true);
*/
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
//$kernel = new AppCache($kernel);
// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter
//Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

这个函数是这样的:

function includeFile($file)
{
    include $file;
}

所以这不是Composer本身的问题。这里没有什么需要优化的。你只是包含了很多文件。

无论如何,仔细看看你的app.php

首先,你写了我使用APC(…),然后粘贴包含以下代码片段:

// 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 SymfonyComponentClassLoaderApcClassLoader(sha1(__FILE__), $loader);
$loader->unregister();
$apcLoader->register(true);
*/

我建议按照这个提示,取消这几行代码的注释。

也有可能优化APC配置

相关内容

  • 没有找到相关文章

最新更新