我正在使用symfony 2.8.12在两个不同的项目中工作并遇到同样的问题:性能。
加载时间太长(不是所有时间,但大部分时间),当我看到探查器时,总会有一个"有罪的组件": 它可以是防火墙,控制器,配置文件监听器,内核响应....是几秒钟的执行时间(有时长于10)。
在不同的线程中读取我试图将db设置为修复ip(如果它是dns查找问题), 在php.ini中修改了一些参数但没有改变。这在我的本地和远程环境中都很重要,它甚至可以启用PHP加速和OPCache。
我的代码没有做任何特别的事情,即使我在" hello world"页面,它有点令人沮丧:)
答案 0 :(得分:11)
这种情况正在发生,因为在开始打印“Hello world”之前,symfony有数千个文件需要阅读。实际上,您的硬盘驱动器对symfony的效率影响最大。幸运的是,几乎没有简单的步骤可以达到一个令人满意的水平。
realpath_cache_size = 4096k
realpath_cache_ttl = 7200
composer dump-autoload --optimize
- 这会创建带有已加载类的转储文件config_prod.yml
中使用元数据缓存:doctrine: orm: metadata_cache_driver: apc result_cache_driver: apc
与常规网站相比,您的网站/ app.php应该有一些额外的行:
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\ClassLoader\ApcClassLoader;
$loader = require __DIR__.'/../app/autoload.php';
include_once __DIR__.'/../app/bootstrap.php.cache';
$apcLoader = new ApcClassLoader(md5($_SERVER['HTTP_HOST']), $loader);
$loader->unregister();
$apcLoader->register(true);
require_once __DIR__.'/../app/AppCache.php';
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
$kernel = new AppCache($kernel);
Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
其他但也非常重要:
事实上这个名单很长,但是在最常见的情况下,前4分加上第8分就可以了。 我希望它会有所帮助。
答案 1 :(得分:1)
您是否在php.ini中启用了xdebug
扩展程序?
如果是这种情况,请尝试禁用它,特别是在生产环境中。