一、发挥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. Windows Server 2012系列之一安装初体验

    微软于2012年9月4日上午8:00(美国时间)发布新一代产品Windows Server 2012,据微软介绍,Windows Server 2012提供了300项新功能,包含新一代Hyper-V ...

  2. 嵌入式 Linux 入门 环境篇(二、安装虚拟机 — 体验 Ubuntu 22.04)

    嵌入式 Linux入门 环境篇第二课,正好换了新电脑,更新 Ubuntu 虚拟机的安装, 体验一下 Ubuntu 22.04 ...... by 矜辰所致 前言 因为以前的电脑虚拟机环境我都配置好了, ...

  3. Windows 7 + SQL Server 2005 + Visual Studio 2008 安装过程体验

    原文地址为: Windows 7 + SQL Server 2005 + Visual Studio 2008 安装过程体验 折腾了大概两天,终于将我的小本装上了心仪已久的 Windows 7,u版( ...

  4. GPD电脑安装linux,怕虚拟机影响性能?GPD pocket 2 安装 Ubuntu 体验

    原标题:怕虚拟机影响性能?GPD pocket 2 安装 Ubuntu 体验 昨天发布了一篇利用虚拟机运行Ubuntu的帖子,提到了GPD pocket 2可以不用虚拟机直接安装运行Ubuntu.正好 ...

  5. 外观、体验升级 HUAWEI WATCH 2 Pro成智能手表领航者

    文丨朱翊 在过去几年时间里,基于移动信息技术的迅猛发展趋势,各种智能终端等设备出现了井喷式发展势头.在移动互联网领域,构建"通讯"+"智能化设备"的潮流也因此成 ...

  6. w10系统自带linux系统,win10下,内置linux系统的安装和体验,你造吗?

    原标题:win10下,内置linux系统的安装和体验,你造吗? 众所周知,windows系统和linux系统一直是水火不容,而在最新的win10系统却完美兼容了linux系统,但是在默认情况下是关闭的 ...

  7. ECS主动运维2.0,体验升级,事半功倍

    摘要: 阿里云致力于提供更好用的运维体验,让您使用ECS的过程更透明.高效,并实现更加标准化.自动化的运维方式.基于主动运维2.0,您使用ECS云服务器的体验更加流畅,而且利用系统事件,不再依赖于工单 ...

  8. Emacs 安装与体验

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

  9. Windows Server 2008 WIA服务需要安装“桌面体验”

    一般安装服务器,谁会想到要安装"桌面体验"呢?但是,恰恰是这个功能没有安装,导致Windows Image Acquisition(WIA)服务根本看不到,其实也就是系统没有安装W ...

最新文章

  1. Android--制作开场动画/MediaPlayer.OnCompletionListener
  2. C语言入门题-是不是太胖了 (10分)
  3. OD使用教程3(中) - 调试篇03|解密系列
  4. 图片大小 媒体大小自适应_自适应堆大小
  5. leetcode160 相交链表
  6. 自动化学matlab,自动化Matlab而无需用户登录
  7. React-Router 4 两个常用路由变量
  8. java合并后求和_Java8使用stream实现list中对象属性的合并(去重并求和)
  9. 练习题 - 基于快速文本标题匹配的知识问答实现(一,基础篇)
  10. 最短路问题(Bellman/Dijkstra/Floyd)
  11. CentOs7安装Oracle11g中的坑
  12. break 退出循环
  13. 用友U8总账对账不平问题总结
  14. mysql的update怎么恢复_mysql误update数据恢复
  15. BadEncoder: Backdoor Attacks to Pre-trained Encoders in Self-Supervised Learning 论文笔记
  16. “新基建”将改变什么
  17. 用python可以做什么有趣的事情_用python做一些有趣的事(一)——根据照片制作版画...
  18. 好用的待办事项APP有哪些
  19. npm包发布正式和测试版
  20. 三人表决器与八人抢答器实验

热门文章

  1. SPICE:过程改进的又一种选择
  2. 政府项目需要注意的事项
  3. php添加linux定时任务,PHP与Linux定时任务
  4. crc可以检出奇数个错误_计算机网络最新章节_陈虹著_掌阅小说网
  5. admob 服务器验证_AdMob服务器注册广告请求,但Ad对象包含“必须声明AdActivity”错误...
  6. 神策数据上线“点击分析”,深度感知用户点击行为
  7. Excel关于使用图形的妙招技法
  8. LeetCode 编程 二
  9. [CODE FESTIVAL 2016]Distance Pairs
  10. 【spring boot】spring boot @ConditionalOnxxx相关注解总结