我正在尝试在带有 PHP7 和 nginx 的 docker 容器中使用 FastCGI PM 构建这个 symfony2 应用程序。

每次应用程序执行时,我都会在 kernel.request 和 kernel.controller 之间获得这个神秘的 3 秒无法解释的执行时间。

您可以在此屏幕截图中看到奇怪的请求时间线:
Symfony2 应用程序总是在 kernel.request 和 kernel.controller 之间等待 3 秒-LMLPHP

当我在流浪机器上的典型 php5.5+apache2 配置上运行该应用程序时,它没有这种行为,所以我不确定它是否与我的 PHP 配置或 PHP7 相关,但我想知道是否有人有以前见过这样的事情,知道这里可能发生什么吗?

在这里编辑 docker_compose 配置:

cafe:
  build: /opt/cafe
  ports:
      - "9981:80"
  environment:
      - "CAFE_CACHE_DIR=/tmp/cafe/cache"
      - "CAFE_LOG_DIR=/var/log/cafe"
      - "SF_ENV=local"
  volumes:
      - /var/log/php7:/var/log/php7
      - /var/log/nginx:/var/log/nginx

最佳答案

万一有人好奇,或者有同样的问题,我终于找到了问题,这不是我所期望的。当我为 PHP7 设置这个项目时,我无法使用通常使用的标准 linux 发行版,我不得不自己添加所有配置文件。

在苦心分析我的代码后,我发现停顿的确切行是我在 kernel.controller 监听器中运行 get_browser() ( http://php.net/manual/en/function.get-browser.php ) 的地方。由于我在容器中设置 php 配置时使用的 browscap.ini 文件,get_browser() 存在性能问题。我想,出于某种原因,我使用的 browscap.ini 文件存在解析问题或其他问题。我用 lite_php_browscap.ini 版本改变了它,现在它运行得非常快,没有问题。

Symfony2 应用程序总是在 kernel.request 和 kernel.controller 之间等待 3 秒-LMLPHP

关于Symfony2 应用程序总是在 kernel.request 和 kernel.controller 之间等待 3 秒,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33336157/

10-13 08:01