我正在尝试在带有 PHP7 和 nginx 的 docker 容器中使用 FastCGI PM 构建这个 symfony2 应用程序。
每次应用程序执行时,我都会在 kernel.request 和 kernel.controller 之间获得这个神秘的 3 秒无法解释的执行时间。
您可以在此屏幕截图中看到奇怪的请求时间线:
当我在流浪机器上的典型 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 秒,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33336157/