【问题标题】:How should the app.php looks like for APC and Symfony 2.1APC 和 Symfony 2.1 的 app.php 应该是什么样子
【发布时间】:2013-02-17 15:04:57
【问题描述】:

我想用 Symfony 2.1 和 APC 准备 app.php 文件。我使用 Symfony 标准版对其进行了教义配置,然后进行了此处描述的更改: http://symfony.com/doc/2.1/book/performance.html

<?php
require_once __DIR__.'\..\vendor\symfony\symfony\src\Symfony\Component\ClassLoader\UniversalClassLoader.php';
require_once __DIR__.'\..\vendor\symfony\symfony\src\Symfony\Component\ClassLoader\ApcUniversalClassLoader.php';
use Symfony\Component\ClassLoader\ApcClassLoader;
use Symfony\Component\HttpFoundation\Request;

$loader = new ApcClassLoader('sf2', $loader);
$loader->register(true);

require_once __DIR__.'/../app/AppKernel.php';
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
?>

但它不起作用,我收到错误:

Fatal error: Class 'Symfony\Component\HttpKernel\Kernel' not found in __my_path__\app\AppKernel.php on line 7

我应该如何准备 app.php 以获得最佳性能。

【问题讨论】:

    标签: php caching symfony apc


    【解决方案1】:

    查看 Symfony 标准发行版中默认的 app.php 文件。为了启用 APC,您的 app.php 文件应如下所示:

    use Symfony\Component\ClassLoader\ApcClassLoader;
    use Symfony\Component\HttpFoundation\Request;
    
    $loader = require_once __DIR__.'/../app/bootstrap.php.cache';
    
    // Use APC for autoloading to improve performance.
    // Change 'sf2' to a unique prefix in order to prevent cache key conflicts
    // with other applications also using APC.
    
    $loader = new ApcClassLoader('sf2', $loader);
    $loader->register(true);
    
    require_once __DIR__.'/../app/AppKernel.php';
    //require_once __DIR__.'/../app/AppCache.php';
    
    $kernel = new AppKernel('prod', false);
    $kernel->loadClassCache();
    //$kernel = new AppCache($kernel);
    $request = Request::createFromGlobals();
    $response = $kernel->handle($request);
    $response->send();
    $kernel->terminate($request, $response);
    

    您还可以通过取消注释require_once __DIR__.'/../app/AppCache.php';$kernel = new AppCache($kernel); 行来启用symfony gateway cache 来提高性能。

    【讨论】:

    • 感谢它运行良好。我删除了以下行: Request::enableHttpMethodParameterOverride();因为它来自 Symfony 2.2 而我使用的是 Symfony 2.1。我是否需要额外注册任何命名空间?
    • 您对Request::enableHttpMethodParameterOverride(); 行的看法是正确的。我已经编辑了答案。请接受它,如果它对你有用。
    • 如果您在 security.yml 或控制器中进行任何 IP 身份验证并启用网关缓存,请确保将 localhost 添加到受信任的代理。见stackoverflow.com/a/16895859/1443717symfony.com/doc/current/components/http_foundation/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2015-12-09
    • 2017-12-14
    • 1970-01-01
    相关资源
    最近更新 更多