一、发挥PHP 7高性能的几个要点

PHP 7相对于之前的PHP版本来说可以说性能有了质的飞跃,但是所谓“好马配好鞍,好车配风帆”,想要发挥PHP 7的性能优势,还需要从以下几个方面做准备:(此部分引自PHP7核心开发者, Yaf, Yar, Yac等项目作者:Laruence)。

1. 记得启用Zend Opcache,启用Opcache非常简单, 在php.ini配置文件中加入:

1
2
3
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1"

2. 使用新的编译器, 推荐GCC 4.8以上, 因为只有GCC 4.8以上PHP 7才会开启Global Register for opline and execute_data支持, 这个会带来5%左右的性能提升。

3. 开启HugePage有利于PHP 7更快, 首先在系统中开启HugePages, 然后开启Opcache的huge_code_pages,以CentOS 6.5为例, 通过命令:$sudo sysctl vm.nr_hugepages=512,分配512个预留的大页内存:

1
2
3
4
5
6
7
$ cat /proc/meminfo  | grep Huge
AnonHugePages:    106496 kB
HugePages_Total:     512
HugePages_Free:      504
HugePages_Rsvd:       27
HugePages_Surp:        0
Hugepagesize:       2048 kB

然后在php.ini中加入:opcache.huge_code_pages=1,这样一来, PHP会把自身的text段, 以及内存分配中的huge都采用大内存页来保存, 减少TLB miss, 从而提高性能.

4. 开启Opcache File Cache(实验性), 通过开启这个, 可以让Opcache把opcode缓存缓存到外部文件中, 对于一些脚本, 会有很明显的性能提升。方法是在php.ini中加入:opcache.file_cache=/tmp。这样PHP就会在/tmp目录下Cache一些Opcode的二进制导出文件, 可以跨PHP生命周期存在.

5. PGO。如果你的PHP是专门为一个项目服务, 比如只是为你的Wordpress, 或者drupal, 或者其他什么, 那么你就可以尝试通过PGO, 来提升PHP, 专门为你的这个项目提高性能。具体的, 以wordpress 4.1为优化场景.. 首先在编译PHP的时候首先:$ make prof-gen。

6、然后用你的项目训练PHP, 比如对于Wordpress:$ sapi/cgi/php-cgi -T 100 /home/huixinchen/local/www/htdocs/wordpress/index.php >/dev/null,也就是让php-cgi跑100遍wordpress的首页, 从而生成一些在这个过程中的profile信息。最后:

1
2
$ make prof-clean
$ make prof-use && make install

7、这个时候你编译得到的PHP7就是为你的项目量身打造的最高性能的编译版本。

二、PHP 7安装与编译

1、PHP 7官网:

  • 1、官网:http://php.net/
  • 2、下载:http://php.net/downloads.php

2、动手能力强的朋友,可以自己直接到官方下载PHP 7,然后手动编辑安装。如果你已经习惯使用lnmp.org站长的LNMP一键安装包,可以试试发布LNMP 1.3测试版,已经增加了增加php7支持:网站平滑迁移到LNMP或LAMP建站环境的方法 。

3、OneinStack提供的LNMP安装包已经有了PHP 7一键安装了,在执行脚本的时候,可以选择PHP 7安装,PHP 7目前只有官方自带的Zend Opcache扩展可供安装。

4、OneinStack安装PHP 7安装成功。

5、这是PHP 7信息显示。

6、这是OneinStack提供的PHP 7的Opcache控制面板。

三、PHP 7与老版本PHP、HHVM性能对比

1、这是国外开发者测试的PHP 7与PHP 5.6在Wordpress、Drupal等热门程序下表现的性能,结果很明显PHP 7性能提升很多。

2、PHP 7对于Wordpress等程序来说,不仅仅提升单个执行速度,随着Wordpress运行在PHP 7的时间越久,性能提升就更多。

3、上文也说到PHP 7对于PHP的性能提升在某些方面已经超过了HHVM,这是国外zend.com官网给出的PHP 5.6、PHP 7、HHVM在不同的程序下执行效率对比结果。

4、在专业开源的电子商务系统Magento上测试PHP 5.6、PHP 7、HHVM的执行效率,PHP 7是PHP 5.6运行速度的两倍,而内存占用还比PHP 5.6低30%。

5、Drupal 8上测试PHP 7的效率是最快的,已经超过了HHVM。

6、Wordpress测试时发现,PHP 5.6执行需要占用100MB内存,而PHP 7只要25MB。

7、在不同的程序执行速度上,PHP 7显然已经领跑,Ruby 2.1、Python 2.7.8、Perl 5.18.4都不及PHP 7。

四、PHP 7性能测试结果报告

1、空说无凭,PHP 7运行程序的性能到底如何呢?这里部落以一个全新的Wordpress为测试对象,运行在PHP 7上Wordpress首页加载时间测试显示0.029秒,内存是3.39MB。

2、这是同样的Wordpress页面运行PHP 5.6上的页面加载时间:1.955秒,内存占用了3.92MB。从数据上看,PHP 7已经完胜了PHP 5.6了。

3、PHP 7运行Wordpress的效率相对于之前的版本确实有了质的提升,为了全面了解PHP 7的性能,这里按照网站服务器压力Web性能测试的方法,用Webbench模拟10秒内200、400个连接数,速度都是8000页面/分以上。

4、此时,VPS服务器系统负载是3.49。

5、把模拟的连接数提高到1600个,速度依然保持在8000页面/分以上。

6、此时,VPS服务器系统负载是17,应该有点吃力了。

7、把模拟的连接数提高到5000个,速度是4800页面/分,速度开始慢下来了。

8、此时,VPS服务器系统负载是23,服务器负责过重了。

9、为了测试PHP 7在本VPS主机承受能力的极限,Webbench模拟10000个连接数在20秒不断访问服务器。

10、此时,VPS服务器的系统负载近90,应该是到达极限了,但是服务器依然没有死机。

11、接下来,让我们来看看同样配置的VPS主机运行Wordpress的压力测试结果,首先是用Webbench模拟10秒内200、400个连接数,速度是3600页面/分,相对于上面的PHP 7测试的速度慢了一半。

12、这是PHP 5.6测试200、400个连接数的系统负载,已经达到了10,明显超出了在PHP 7环境上测试的3.49。

13、在PHP 5.6测试将模拟连接数提高到1000、2000个,此时速度已经降到1600页面/分,连接成功数也降低到了500左右,远远低于在PHP 7测试时的2700。

14、此时,系统负载达到了17了。

15、在PHP 5.6中用Webbench测试连接数为10000,在20秒内不断访问服务器。此时,测试已经卡住,没有结果。

16、这里VPS服务器的系统负载已经达到了1000以上,服务器已经崩溃了。

17、PHP 5.6下的Wordpress网站已经宕机了。

五、PHP 7兼容性问题

1、目前国内的Discuz等还不支持PHP 7,PHP扩展也就只有官方的Opcache可以使用,其它的如eAccelerator、xcache、memcached等,大家可以随时关注扩展支持列表:https://github.com/gophp7/gophp7-ext/wiki/extensions-catalog。php的memcache扩展已经有了:https://github.com/php-memcached-dev/php-memcached/tree/php7 和https://github.com/websupport-sk/pecl-memcache。感谢快乐家园博主的提醒。

2、经过测试,PHP 7运行Wordpress没有任何问题。

3、在PHP 7上安装Wordpress插件都没有问题。

4、PHP 7还有部分函数、运算符等可能出现不兼容问题,不过99%的程序可能不会用到这些。

六、PHP 7安装使用体验小结

1、使用PHP 7后有一个惊喜就是,确实如国外开发者测试的那样,PHP 7性能基本上与HHVM持平,由于HHVM借助实时(Just In Time)编译器将 PHP 代码编译至机器指令,所以不少的PHP程序运行在HHVM是需要改良的。

2、PHP 7具备了HHVM的超高性能,同时又有了PHP向后兼容的优势,相信在不久的未来PHP 7会得到越来越多人的认可和接受。虽然目前支持PHP 7的缓存、加速等扩展还不多,但是这只是时间问题,越来越多的开发者会加入到PHP 7的开发行列中。

来自: http://www.phpxs.com/j/php7/1001234

PHP 7安装使用体验,升级PHP要谨慎的更多相关文章

  1. Nginx unit 源码安装初体验

    Nginx unit 源码安装初体验 上次介绍了从yum的安装方法(https://www.cnblogs.com/wang-li/p/9684040.html),这次将介绍源码安装,目前最新版为1. ...

  2. Windows Server 2012 R2部署--安装桌面体验

    Windows Server 2012 R2部署(3)---安装桌面体验 1) 打开服务器管理器 2) 选择所有服务器    3)添加角色和功能    4)下一步    5)下一步    6)下一步 ...

  3. Emacs 安装与体验

        Emacs 安装与体验 下载与安装 首先是下载最新的x64版本的Emacs. 将下载下来的文件解压到你喜欢的磁盘目录下,我选择的是C:\Program Files.放在D盘可能是更好的选择,因 ...

  4. WPS Office 2012专业版与WPS2019政府云办公增强版下载安装与体验

    WPS Office 2012专业版与WPS2019政府云办公增强版下载安装与体验 一.WPS Office 2012专业版. 优点:没有广告,很清爽,界面很人性化.是我于2019年11月找出来安装测 ...

  5. Kylin 初入门 | 从下载安装到体验查询

    本文旨在为 Kylin 新手用户提供一份从下载安装到体验亚秒级查询的完整流程.文章分为两个部分,分别介绍了有 Hadoop 环境(基于 Hadoop 环境的安装)和没有 Hadoop 环境(从 Doc ...

  6. ansible2.4安装和体验

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. 20天等待,申请终于通过,安装和体验IntelliJ IDEA新UI预览版

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于IDEA的预览版 IDEA会启用新的UI,这事情之 ...

  8. WDCP面板V3新版本安装与体验记录

    WDCP面板V3版本看介绍变动还是比较大的,比如从底层重新架构,以及我们需要的PHP.MYSQL.NGINX等版本都是使用较新稳定版本,支持CENTOS5-7发行版本环境,至于后台界面的友好度有点扁平 ...

  9. 一起学微软Power BI系列-使用技巧(3)Power BI安卓手机版安装与体验

    Power BI有手机版,目前支持安卓,苹果和WP,不过没有WP手机,苹果在国内还不能用,要FQ和用就不测试了.安卓的我也也是费了九牛二虎之力才把app下载下来,把方法分享给大家. FQ太麻烦,所以建 ...

随机推荐

  1. POJ 2082 Terrible Sets(单调栈)

    [题目链接] http://poj.org/problem?id=2082 [题目大意] 给出一些长方形下段对其后横向排列得到的图形,现在给你他们的高度, 求里面包含的最大长方形的面积 [题解] 我们 ...

  2. 【匈牙利算法模板】BZOJ1191-超级英雄

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> us ...

  3. Problem P: 素数求和

    #include<stdio.h> int main() { ; scanf("%d",&n); n>=&&n<=; ;i<= ...

  4. java前后端加密(转载)

    最近做一个项目的安全渗透测评,测评人员发来一份测试报告,报告明确提出不允许明文参数传输,因为数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的 ...

  5. Mac Sublime Text 3 配置Python环境及安装插件

    一.下载安装Sublime Text 3 官网下载地址:http://www.sublimetext.com/3 二.配置Python开发环境 1.点击右下角,选择python 2.添加编译环境pyt ...

  6. microsoft visual studio遇到了问题,需要关闭

    http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=13821 装上这个补丁: WindowsXP-KB971513-x86-CH ...

  7. 全局流水ID号生成的几种方法

    这个问题源自于,我想找一个分布式下的ID生成器.  这个最简单的方案是,数据库自增ID.为啥不用咧?有这么几点原因,一是,会依赖于数据库的具体实现,比如,mysql有自增,oracle没有,得用序列, ...

  8. 【AS3 Coder】任务八:没剧情还玩毛RPG

    使用框架:AS3任务描述:了解RPG游戏中剧情播放器的制作原理及流程难度系数:3(了解原理,能根据XML文件播放剧情) / 5(会制作剧情编辑器) 本章源码下载:http://www.iamseven ...

  9. C# 解决窗体假死的状态

    异步调用是CLR为开发者提供的一种重要的编程手段,它也是构建高性能.可伸缩应用程序的关键.在多核CPU越来越普及的今天,异步编程允许使用非常少的线程执行很多操作.我们通常使用异步完成许多计算型.IO型 ...

  10. [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket错误解决方法总结

    今天做一个特殊的业务处理,用JDBC连接SQLServer数据库载入驱动的时候,报例如以下错误: java.sql.SQLException: [Microsoft][SQLServer 2000 D ...