分享五个PHP7性能优化提升技巧_php实例

PHP7已经发布了, 作为PHP10年来最大的版本升级, 最大的性能升级, PHP7在多放的测试中都表现出很明显的性能提升, 然而, 为了让它能发挥出最大的性能, 我还是有几件事想提醒下.

1. Opcache

记得启用Zend Opcache, 因为PHP7即使不启用Opcache速度也比PHP-5.6启用了Opcache快, 所以之前测试时期就发生了有人一直没有启用Opcache的事情. 启用Opcache非常简单, 在php.ini配置文件中加入:

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

2. 使用新的编译器

使用新一点的编译器, 推荐GCC 4.8以上, 因为只有GCC 4.8以上PHP才会开启Global Register for opline and execute_data支持, 这个会带来5%左右的性能提升(Wordpres的QPS角度衡量)

其实GCC 4.8以前的版本也支持, 但是我们发现它支持的有Bug, 所以必须是4.8以上的版本才会开启这个特性.

3. HugePage

我之前的文章也介绍过: 让你的PHP7更快之Hugepage , 首先在系统中开启HugePages, 然后开启Opcache的huge_code_pages.

以我的CentOS 6.5为例, 通过:

$sudo sysctl vm.nr_hugepages=512

分配512个预留的大页内存:

$ 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 File Cache(实验性), 通过开启这个, 我们可以让Opcache把opcode缓存缓存到外部文件中, 对于一些脚本, 会有很明显的性能提升.
在php.ini中加入:

复制代码 代码如下:

opcache.file_cache=/tmp

这样PHP就会在/tmp目录下Cache一些Opcode的二进制导出文件, 可以跨PHP生命周期存在.

5. PGO

我之前的文章: 让你的PHP7更快(GCC PGO) 也介绍过, 如果你的PHP是专门为一个项目服务, 比如只是为你的Wordpress, 或者drupal, 或者其他什么, 那么你就可以尝试通过PGO, 来提升PHP, 专门为你的这个项目提高性能.

具体的, 以wordpress 4.1为优化场景.. 首先在编译PHP的时候首先:

复制代码 代码如下:

$ make prof-gen

然后用你的项目训练PHP, 比如对于Wordpress:

复制代码 代码如下:

$ sapi/cgi/php-cgi -T 100 /home/huixinchen/local/www/htdocs/wordpress/index.php >/dev/null

也就是让php-cgi跑100遍wordpress的首页, 从而生成一些在这个过程中的profile信息.

最后:

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

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

暂时就这么多吧, 以后想起来再加, 欢迎大家尝试, thanks

以上小编给大家分享五个PHP7性能优化提升技巧,希望大家喜欢。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php7性能
php7性能提升
显卡优化提升性能、ansys拓扑优化实例、matlab优化设计实例、abaqus拓扑优化实例、粒子群优化算法实例,以便于您获取更多的相关知识。

时间: 2024-10-02 09:04:09

分享五个PHP7性能优化提升技巧_php实例的相关文章

大家须知简单的php性能优化注意点_php实例

什么情况,可能遇到性能问题: 1.php语法使用的不恰当 2.使用php语言做了它不擅长做的事 3.用php语言连接的服务不给力 4.php自身的短板 5.我也不知道的问题 一般情况:php性能问题不超过二分之一(一般30%~40%) php性能问题解决方向: php语言级的性能优化->php周边问题的性能优化(连接的服务,网络环境)->php语言自身分析和优化 (php语言级) 优化点:少写代码,多用php自身能力 问题:自写代码冗余较多,可读性不佳,导致性能低 为什么低:php代码需要编译

postgreSql性能优化提升技巧指南

一.使用EXPLAIN:     PostgreSQL为每个查询都生成一个查询规划,因为选择正确的查询路径对性能的影响是极为关键的.PostgreSQL本身已经包含了一个规划器用于寻找最优规划,我们可以通过使用EXPLAIN命令来查看规划器为每个查询生成的查询规划.     PostgreSQL中生成的查询规划是由1到n个规划节点构成的规划树,其中最底层的节点为表扫描节点,用于从数据表中返回检索出的数据行.然而,不同的扫描节点类型代表着不同的表访问模式,如:顺序扫描.索引扫描,以及位图索引扫描等

开源力量公开课第三十五期-KVM性能优化

问题描述 课程题目:开源力量公开课第三十五期-KVM性能优化开课时间:2013年10月22日19:00-21:30现场或线上参课:现场参加(免费):北京市海淀区海淀西大街70号,3W咖啡二楼(海淀图书城籍海楼对面)线上直播(免费):邮件报名后将即时提供线上参课网址报名:发邮件到osf@osforce.cn,邮件标题:开源力量公开课第35期,邮件正文:在线或现场+姓名+公司+职位+联系电话邮件报名后,我们将即时回复线上参课网址若未收到不要前往现场的邮件,默认表示通过不接受未报名空降,拒绝放鸽子课程

前端工程师前端性能优化及技巧分享

  在行业内有句话不知道大家有没有听说过,'懂得性能优化并且研究过jquery源代码的人和不懂得性能优化写出来的代码对于性能的消耗会相差上百倍甚至上千倍',现在的javascript属于从ECMAscript3到ECMAscript5以及ECMAscript6的一个过渡的过程.在javascript的编写不健全的时候编写代码方法不得当,引起的问题也是不容忽视的. 性能优化 下面将自己对于性能优化的一些见解与大家分享; 1.精灵图 最基本的是尽可能的将背景图片做成精灵图,减少图片的请求,所以一般w

前端性能优化及技巧_javascript技巧

    前言        为什么要优化性能对于前端工程师如此重要           在行业内有句话不知道大家有没有听说过,'懂得性能优化并且研究过jquery源代码的人和不懂得性能优化写出来的代码对于性能的消耗会相差上百倍甚至上千倍',现在的javascript属于从ECMAscript3到ECMAscript5以及ECMAscript6的一个过渡的过程.在javascript的编写不健全的时候编写代码方法不得当,引起的问题也是不容忽视的.     性能优化     下面将自己对于性能优化的

javascript性能优化之事件委托实例详解_javascript技巧

本文实例分析了javascript性能优化之事件委托.分享给大家供大家参考,具体如下: 为下面每个LI绑定一个click事件 <ul id="myLinks"> <li id="goSomewhere" >Go somewhere</li> <li id="doSomething" >Do something</li> <li id="sayHi" >Sa

分享四个电子商务网站优化的技巧

电子商务网站往往在SEO方面会比其他类型的站点困难.大部分枯燥.乏味的产品说明,URL结构一团乱,还有因为要依赖大量的图片,所以他们的网站速度很慢并且对于搜索引擎的蜘蛛来说看起来是空白的.然而,这并不意味着对于电子商务网站来说没有希望优化,搜索引擎优化的最佳实践指导方针仍适用,但是电子商务网站与其他网站来说,方法可能有所不同.以下笔者将介绍四个电子商务网站内容优化的技巧. 一:使用独特的产品说明 困扰电子商务网站最常见的问题之一是他们几乎都使用从制造商发送过来的相同的产品说明.当你的站点的内容是

淘宝内部分享:MySQL &amp; MariaDB性能优化

编者按:MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,必须进行不断的优化,而优化是一个复杂的任务,本文描述淘宝数据库团队针对MySQL数据库Metadata Lock子系统的优化,hash_scan 算法的实现解析的性能优化,TokuDB·版本优化,以及MariaDB·的性能优化.本文来自淘宝团队内部经验分享. 往期文章:淘宝内部分享:怎么跳出MySQL的10个大坑 MySQL· 5.7优化·Metadata Lock子系统的优化 背景 引入MDL锁的目的,最

分享五个有用的jquery小技巧_jquery

1.禁用鼠标右键 $(document).ready(function() { $(document).bind("contextmenu", function(e) { return false; }); }); 当然jquery1.7版本以后bind()函数推荐用on()来代替. 2.让内容闪烁起来 $.fn.flash = function(color, duration) { var current = this.css('color'); this.animate( {col