首页 资讯 数码 查看内容

PHP 7的五大效能

2015-12-29 08:25 1757 0

摘要: 标榜十年来最大改版的PHP 7,最大亮点是翻倍的效能提升,但若只是现有网站的旧版PHP环境升级到新版,还不足以充分发挥PHP 7的能耐。密技1 启用Zend OpcachePHP 7 主要开发者也公开了5个PHP开发者一定要知道的新版效 ...
关键词: 密技 记忆体 效能 PHP Opcache 程式 编译 make WordPress HugePage

标榜十年来最大改版的PHP 7,最大亮点是翻倍的效能提升,但若只是现有网站的旧版PHP环境升级到新版,还不足以充分发挥PHP 7的能耐。

密技1 启用Zend Opcache

PHP 7 主要开发者也公开了5个PHP开发者一定要知道的新版效能密技。

Opcache是一个将预先编译的脚本程式快取在共用记忆体的功能,但PHP预设设定会关闭这项功能,因此,很多开发者会忘了善用这个优化机制。即使不启用Opcache,PHP 7的效能已可超越5.6版,启用后还可以更快。可以直接在php.ini档中加入以下设定来启用Opcache。

end_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1"
 密技2 使用新版编译器

要将PHP脚本程式编译成二进位档时,惠新宸推荐使用GCC 4.8版以上的编译器。他解释,因为GCC 4.8版以上才会开启Global Register对opline和execute_data的支援,有助于提高5%的效能。尽管旧版GCC支援,但旧版这项支援功能还有臭虫,因此,惠新宸建议GCC得升级到4.8版以上。

 密技3 启用HugePage

启用Linux系统的HugePage(大型暂存分页机制)可让PHP的Text段落和记忆体中的分页都改用HugePage来储存,来减少TLB(Translation Lookaside Buffer)遗失而提高效能。原本系统记忆体多以4KB来分页,但启用HugePage后则改以2MB来分页。

CPU存取记忆体时,得查表才能得知虚拟定址和记忆体定址间的转换,CPU会透过TLB暂存来加速查表。

若分页单位越小,分页笔数就越多,查表时就会得建立越多TLB,容易造成暂存资料的遗失而得重查,启用了大型HugePage分页设定就能减少TLB数量而降低遗失的问题。

若以CentOS 6.5为例,可透过sudo sysctl vm.nr_hugepages=512指令,来分配512个预留的大型暂存分页,然后在php.ini设定档中加入opcache.huge_code_pages=1的叙述就能启用。

 密技4 Opcache档案快取

开启了Opcache File Cache功能后,可以将Opcache将Opcode暂存到外部档暗中,有助于改善某些脚本程式的效能。

只需在php.ini设定档中加入opcache.file_cache=/tmp,就可以在/tmp目录下快取Opcode二进位档案,可跨PHP生命周期存在。

 密技5 使用PGO预执行最佳化

如果PHP环境只用于执行单一程式,例如只来执行WordPress或Drupal,惠新宸建议,使用者可重新编译PHP 7并使用GCC的PGO预执行最佳化机制,来编译出一个专为你量身打造的特定PHP 7版本,来提高效能。

例如要优化WordPress 4.1时,可下达make prof-gen指令后,先用hp-cgi执行100次WordPress首页程式来产生Profile资讯,再执行make prof-clean和make prof-use && make install,来编译出一个量身打造的专属高效能PHP 7版本。

WordPress 4.1作为优化场景,并示范编译指令。

$ make prof-gen
$ sapi/cgi/php-cgi -T 100 /home/huixinchen/local/www/htdocs/wordpress/index.php >/dev/null
$ make prof-clean
$ make prof-use && make install
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部