这是因为Symfony在打印“Hello world”之前需要读取数千个文件。实际上,硬盘对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
与常规代码相比,您的web/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点在大多数常见情况下就可以解决问题。希望这能够帮到你。
metadata_cache_driver: apc
或标准的 php app/console cache:clear --env=prod --no-debug
,我是否需要清除APC缓存? - StockBreak您是否在php.ini中启用了xdebug
扩展?
如果是这种情况,请尝试禁用它,特别是在生产环境中。
realpath_cache_ttl
的值。同时看看我的文章,我鼓励你尝试使用元数据和查询结果缓存。你不仅可以使用apc进行缓存,还可以使用其他提供者,如memcached。 - Grzegorz Krauze