PHP 7.3声称速度比PHP 5快3倍还多,值得更新了!
作为PHP5的最后一个版本,也是目前使用最广泛的PHP版本,PHP 5.6始于公元2014年(不是1804年,嘿嘿),其第一个测试版PHP 5.6 alpha 1版于2014年1月发布。随机产生了第一个由国人(鸟哥,惠新宸)参与主研的性能大规模提升版本PHPNG(PHP next generation,下一代PHP),2015年基于PHPNG接着就产生PHP 7版本。PHP7带来了革命性的性能提高,其运行速率是5.6的两倍还高以及其他改善,比如64位支持、类型申明、运行时优化等。从2015年开始官方就一直推荐大家尽快升级到php7,虽然当时扩展支持还是很成问题。
根据最新的W3techs统计,目前PHP 7大概占了超过16.6%的PHP份额。 总体上PHP仍然拥有大约83%的网站服务器端开发语言的绝大多数比例。
根据PHP开发支持周期,到今年12月31日后,PHP 5.6不在有官方支持。所以现在只剩下半年时间你升级你的PHP到PHP7。此后PHP5的命运就会终结,而且就虫虫所致目前基本上绝大多数的框架和程序都已经完美的支持PHP7了。
性能测试:PHP 7.3比PHP 7.0快25%
有很多性能测试对比都揭示了PHP 7比PHP 5.6快至少2倍。下面是各大php框架心性能对比图:
下面最新Phoronix基准测试结果则显示了自PHP7发布以来PHP 7的性能对比情况。最新版本的PHP 7.3 Alpha比以初始版本的PHP 7在系能上的改善的也是相当客观的。根据最新数据PHP 7.3是比PHP 5.6快3倍!比PHP 7.0快25%。不说别的光这性能对比图就能给烈日炎炎的夏日带来丝丝凉意。而且这还可以直接体现在费用上,比如升级PHP7后,Badoo大概每年可减少100w美刀。
Badoo公司的数据:
PHP 7兼容行检查
截止目前基本上绝大多数的PHP都可以完美的支持PHP7.0了。但是可能你恰好有一些历史遗留的脚本和程序,那么也好办,社区已经有好多的工具做兼容性检查,甚至给出直接的代码转译,以下是几个值得推荐的工具:
php7cc:一个很不错的工具,不过目前已经不再更新了。(github地址: /sstalle/php7cc)
php7mar:PHP 7迁移助手,虫虫强烈推荐的工具。 (github地址:/Alexia/php7mar)
使用方法:
php mar.php -f="/path/to/project/root/" -r="/path/to/output/"
phan:PHP脚本的静态分析器。 可以做当做php 7的语法检查器。(github地址:/phan/phan)
使用方法:phan --project-root-directory --progress-bar -o phan.out
phpstan - PHP静态分析和兼容性检查工具。(github地址:/phpstan/phpstan)
PHP 7性能设置要点
1. Opcache
首先,确保已经启用了OpCache。可以通过主配置文件php.ini或它独特的配置文件opcache.ini文件(例如/etc/php/7.2/fpm/conf.d/10-opcache.ini)。来进行设置。
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
可以使用phpinfo()检查,也可以通过终端命令
php -v or php -i | grep opcache.enable
确认PHP OpCache已启用后,很多的ln(a)mp套件都有一个opCache监控脚本,可以对其系能进行实时监控,如下图
2、设置合适的realpath_cache_size
通过设置合宜的realpath_cache_size值可以改善你服务器的并发:
realpath_cache_size = 256k
realpath_cache_ttl = 300
3、禁止mysqlnd.collect_statistics
mysqlnd.collect_statistics = Off
mysqlnd.collect_memory_statistics = Off
线上服务器选择禁止这两个选项,可以减少不必要的数据库访问。如果需要相关统计,可以使用MySQL工具或者监控。
4、使用新的编译器
GCC 4.8编译器下编译时PHP才能开启Global Register for opline and execute_data支持, 这个会带来5%左右的性能提升。
5、开启Transparent HugePage (透传大页)
内存默认是以4KB分页的,而虚拟地址和内存地址需要转换,转化时候需要进行搜索,为了加速转换过程,可以通过内存TLB(Translation Lookaside Buffer)来。所以通过启用大内存页可以增加TLB 缓存命中,从而提高性能。
设置系统支持:
sysctl vm.nr_hugepages=512
php.ini 增加支持
opcache.huge_code_pages=1
关于这个值,很多实践后发现启用透传大页面后会带来系统负载过高,cpu占用过高问题,这时候通过关闭就可以解决。所以这个参数需要实际情况斟酌测试使用。
6、开启PGO
PHP是专门为一个项目服务,比如一个 Wordpress或者drupal站点,就可以使用PGO提高性能。