PHP 7安装使用体验,升级PHP要谨慎
一、发挥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要谨慎相关推荐
- Windows Server 2012系列之一安装初体验
微软于2012年9月4日上午8:00(美国时间)发布新一代产品Windows Server 2012,据微软介绍,Windows Server 2012提供了300项新功能,包含新一代Hyper-V ...
- 嵌入式 Linux 入门 环境篇(二、安装虚拟机 — 体验 Ubuntu 22.04)
嵌入式 Linux入门 环境篇第二课,正好换了新电脑,更新 Ubuntu 虚拟机的安装, 体验一下 Ubuntu 22.04 ...... by 矜辰所致 前言 因为以前的电脑虚拟机环境我都配置好了, ...
- Windows 7 + SQL Server 2005 + Visual Studio 2008 安装过程体验
原文地址为: Windows 7 + SQL Server 2005 + Visual Studio 2008 安装过程体验 折腾了大概两天,终于将我的小本装上了心仪已久的 Windows 7,u版( ...
- GPD电脑安装linux,怕虚拟机影响性能?GPD pocket 2 安装 Ubuntu 体验
原标题:怕虚拟机影响性能?GPD pocket 2 安装 Ubuntu 体验 昨天发布了一篇利用虚拟机运行Ubuntu的帖子,提到了GPD pocket 2可以不用虚拟机直接安装运行Ubuntu.正好 ...
- 外观、体验升级 HUAWEI WATCH 2 Pro成智能手表领航者
文丨朱翊 在过去几年时间里,基于移动信息技术的迅猛发展趋势,各种智能终端等设备出现了井喷式发展势头.在移动互联网领域,构建"通讯"+"智能化设备"的潮流也因此成 ...
- w10系统自带linux系统,win10下,内置linux系统的安装和体验,你造吗?
原标题:win10下,内置linux系统的安装和体验,你造吗? 众所周知,windows系统和linux系统一直是水火不容,而在最新的win10系统却完美兼容了linux系统,但是在默认情况下是关闭的 ...
- ECS主动运维2.0,体验升级,事半功倍
摘要: 阿里云致力于提供更好用的运维体验,让您使用ECS的过程更透明.高效,并实现更加标准化.自动化的运维方式.基于主动运维2.0,您使用ECS云服务器的体验更加流畅,而且利用系统事件,不再依赖于工单 ...
- Emacs 安装与体验
Emacs 安装与体验 下载与安装 首先是下载最新的x64版本的Emacs. 将下载下来的文件解压到你喜欢的磁盘目录下,我选择的是C:\Program Files.放在D盘可能是更好的选择,因为待会的 ...
- Windows Server 2008 WIA服务需要安装“桌面体验”
一般安装服务器,谁会想到要安装"桌面体验"呢?但是,恰恰是这个功能没有安装,导致Windows Image Acquisition(WIA)服务根本看不到,其实也就是系统没有安装W ...
最新文章
- Android--制作开场动画/MediaPlayer.OnCompletionListener
- C语言入门题-是不是太胖了 (10分)
- OD使用教程3(中) - 调试篇03|解密系列
- 图片大小 媒体大小自适应_自适应堆大小
- leetcode160 相交链表
- 自动化学matlab,自动化Matlab而无需用户登录
- React-Router 4 两个常用路由变量
- java合并后求和_Java8使用stream实现list中对象属性的合并(去重并求和)
- 练习题 - 基于快速文本标题匹配的知识问答实现(一,基础篇)
- 最短路问题(Bellman/Dijkstra/Floyd)
- CentOs7安装Oracle11g中的坑
- break 退出循环
- 用友U8总账对账不平问题总结
- mysql的update怎么恢复_mysql误update数据恢复
- BadEncoder: Backdoor Attacks to Pre-trained Encoders in Self-Supervised Learning 论文笔记
- “新基建”将改变什么
- 用python可以做什么有趣的事情_用python做一些有趣的事(一)——根据照片制作版画...
- 好用的待办事项APP有哪些
- npm包发布正式和测试版
- 三人表决器与八人抢答器实验
热门文章
- SPICE:过程改进的又一种选择
- 政府项目需要注意的事项
- php添加linux定时任务,PHP与Linux定时任务
- crc可以检出奇数个错误_计算机网络最新章节_陈虹著_掌阅小说网
- admob 服务器验证_AdMob服务器注册广告请求,但Ad对象包含“必须声明AdActivity”错误...
- 神策数据上线“点击分析”,深度感知用户点击行为
- Excel关于使用图形的妙招技法
- LeetCode 编程 二
- [CODE FESTIVAL 2016]Distance Pairs
- 【spring boot】spring boot @ConditionalOnxxx相关注解总结