Symfony2应用程序在kernel.request和kernel.controller之间总是有3秒的等待时间

时间:2015-10-25 23:11:28

标签: symfony nginx docker php-7

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

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

您可以在此屏幕截图中看到奇怪的请求时间轴: enter image description here

当我在我的流浪汉机器上运行我典型的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

3 个答案:

答案 0 :(得分:3)

如果有人好奇,或有同样的问题,我终于找到了问题,这不是我的预期。当我为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版本更改了它,现在它运行得非常快,没有任何问题。

enter image description here

答案 1 :(得分:1)

最近也在一个盒子里忙着Symfony的表现。以下最近的文章是我能找到的最好的回顾:

http://by-examples.net/2014/12/09/symfony2-on-vagrant.html

答案 2 :(得分:0)

这是因为Symfony的vendor目录。它需要太多的IO操作。 VirtualBox同步文件夹的性能非常慢 the benchmark

您可以将vendor目录移到同步文件夹之外。就像下面的方式:
这是My question

但是,最后,我没有最好的解决方案。所以,我已经转移到纯linux 环境来编写我的代码了。