dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2165
  • 铜币13236枚
  • 威望5838点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
阅读:1112回复:1

测试 php7

楼主#
更多 发布于:2017-02-10 13:39
目标
PHP 底层升级,最终的目标是 PHP 5.6.x 升级到 PHP 7.x 版本;

PHP7的学习和预研
1. HHVM和JIT
PHP性能优化的方案,有另外一个比较重要的角色,就是由Facebook开源的HHVM (HipHop Virtual Machine,HHVM是一个Facebook开源的PHP虚拟机)HHVM使用JIT(Just In Time,即时编译是种软件优化技术,指在运行时才会去编译字节码为机器码)的编译方式以及其他技术,让PHP代码的执行性能大幅提升。

对于HHVM的性能可以获得可观的提升,但是服务运维和PHP语法兼容有一定成本。

2. PHP7在性能方面的优化
....
3. 技术选型的背景
对于PHP版本对代码的向下兼容的需求是比较高,因此就业务场景而言,PHP7良好的语法向下兼容,正是所需要的。所以选择以PHP7为升级的方案。

PHP7升级面临的风险
对于一个已经现网在线的Web服务来说,基础公共软件升级,通常是一件吃力不讨好的工作,做得好,不一定被大家感知到,但是,升级出了问题,则需要承担责任。为了尽量减少升级的风险,我们必须先弄清楚我们的升级存在的风险。

1. 软件版本
当前版本:php 5.6.x 与 tengine 2.1.x
升级版本:php php-7.1.x 与 tengine 2.2.x

2. 语法兼容
语法兼容性问题,从PHP 5.6到 PHP 7.1,即使PHP官方号称在向下兼容方面做到99%,但是在没有落地之前它仍然是一个未知的风险。
参考: 从PHP 5.6.x 移植到 PHP 7.0.x

安装部署

1. 自动化部署
    部署脚本优化,试错,更新;
2. 遇到问题
    主要是兼容性问题,
    编译安装 libiconv 报错,不支持 centos 7 系统;
    php-memcache 扩展报错,不支持 php 7.x ,移除;
    php-memcached 扩展报错,更新 php 7 分支;
    phpredis 扩展报错,更新 php 7 分支;
3. 测试
    PHP扩展模块;
    PHP配置文件(ini/fpm)
    性能测试对比;
    代码兼容性测试;
    应用在开发环境;
    应用在测试环境;
    应用在生产环境;

内容来自
:
日请求过亿的Web系统PHP7升级实践
PHP 7 ,你值得拥有
PHP7和HHVM的性能之争
centos7下编译安装libiconv-1.14 error: ‘gets’ undeclared here (not in a function)
centos7下安装php7
安装php7的memcached扩展
PHP7安装Redis扩展
从PHP 5.6.x 移植到 PHP 7.0.x
#
dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2165
  • 铜币13236枚
  • 威望5838点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
沙发#
发布于:2017-02-10 14:04
php 7 简单的性能测试
环境
php 5.6.x ON CentOS 6.8 amd64
gcc --version | head -n1
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-17)

php 7.1.x ON CentOS 7.3 amd64
gcc --version | head -n1
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)

测试目标
在 1000万个元素的数组中,搜索 key(键) 是否存在;

代码

cat array_key_exists.php
<?php
$a = array();
for($i=0;$i<1000000;$i++){
        $a[$i] = $i;
}

foreach($a as $i)
{
    array_key_exists($i, $a);
}

步骤

1. php5
tail /etc/centos-release
CentOS release 6.8 (Final)

php -v
PHP 5.6.13 (cli) (built: Jan  4 2016 16:53:50)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

time php array_key_exists.php
real    0m4.713s
user    0m3.322s
sys    0m1.389s

time php array_key_exists.php
real    0m4.628s
user    0m3.232s
sys    0m1.396s

time php array_key_exists.php
real    0m4.999s
user    0m3.497s
sys    0m1.500s

2. php7
tail /etc/centos-release
CentOS Linux release 7.3.1611 (Core)

php -v
PHP 7.1.1 (cli) (built: Feb  8 2017 10:18:27) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.1, Copyright (c) 1999-2017, by Zend Technologies

time php array_key_exists.php
real    0m0.646s
user    0m0.557s
sys    0m0.088s

time php array_key_exists.php
real    0m0.698s
user    0m0.608s
sys    0m0.091s

time php array_key_exists.php
real    0m0.728s
user    0m0.621s
sys    0m0.107s

3. 小结
php 5.6.13 执行时间,平均值: 4.78
php 7.1.1 执行时间,平均值: 0.69
就本次简单的测试而言,php 7.1.1 的执行效率是 php 5.6.13 的 6.9 倍;  

#
游客

返回顶部