Symfony 2.从php5.5迁移到php 7的项目。性能问题

时间:2016-04-29 18:12:50

标签: php performance symfony php-7

我有一个项目~4岁,我从5.3和Symfony 2.0开始,迁移到5.5和S2.3。目前我已迁移到S2.8,我想迁移到php 7。

由于围绕PHP 7的性能有很多堆,我很想在开发环境中测试我的项目性能。

因此在dev env中运行基准测试;服务是在流浪的主机上同时拥有php5-fpm和php7.0-fpm,关闭一个并设置另一个。

我希望php7能胜过php5,但基本上似乎php7 在我的本地开发环境中慢了1.5-2倍

我做错了什么?或者我应该以某种方式重写我的应用程序?

的phpinfo: php 7 http://pastebin.com/a6a76vE2 php 5 http://pastebin.com/4GBXNmBB

P.S。是的,我知道在本地开发环境中运行基准测试不是100%有效和纯粹,但我只需要了解php7是否比php5更快,正如它所说的那样。

U1

最有趣的是,blackfire清楚地表明php 7比php 5快〜45%。但是当我围攻时,我发现性能会下降。

U2

这里或多或少是dev env的自定义配置。对于php5.5和php7来说也一样:

[Date]
date.timezone = Europe/Tallinn

[PHP]
memory_limit = 512M
expose_php = Off
cgi.fix_pathinfo = 0
post_max_size = 10M
upload_max_filesize = 10M
max_execution_time = 60
realpath_cache_size = 4096k
realpath_cache_ttl = 7200

error_reporting = E_ALL | E_STRICT
log_errors = On
error_log = /var/log/php.errors.log

display_errors = On
display_startup_errors = On
html_errors = On

; xdebug
xdebug.remote_enable = On
xdebug.remote_port = 9001
xdebug.max_nesting_level = 200
xdebug.remote_log = /tmp/xdebug.log
xdebug.remote_connect_back = on
xdebug.idekey = "vagrant"

[opcache]
opcache.enable_cli=0
opcache.save_comments=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=66000
opcache.fast_shutdown=1
opcache.enable=1
opcache.revalidate_freq=5
opcache.validate_timestamps=1

2 个答案:

答案 0 :(得分:1)

在全局和PHP7中优化PHP代码的几个步骤:

  • composer selfupdate
  • 作曲家更新
  • composer dumpautoload -a
  • 激活zend opcache(或任何其他已安装的php opcache)
  • php.ini中的
    • opcache.max_accelerated_files = 20000(或更多)
    • opcache.validate_timestamps = 1
    • opcache.revalidate_freq = 10(或更多)
    • xdebug.default_enable = 0
  • 重启php-fpm7服务

如果性能问题仍然存在,请使用blackfire对您的典型测试页进行分析。

答案 1 :(得分:0)

这个的原因肯定是xdebug。请关闭它,然后检查性能。

我必须指出,在从PHP5.5 / Symfony 2.0切换到PHP7 / Symfony 3.0之后我们确实遇到了性能下降。这是由Symfony 2.8+如何处理php会话引起的。它将它们存储在本地目录而不是标准/ tmp目录中,该目录几乎总是存储在RAM中。因此,如果你有相当多的会话文件,那么从HDD中搜索文件需要很长时间。

在Symfony配置中删除后,应用程序开始显示我们希望的性能提升。