让PHP7达到最高性能的几个Tips

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

2017 php7 使用率,让PHP7达到最高性能的几个Tips相关推荐

  1. godaddy停止支持php哪个版本,GoDaddy cPanel虚拟主机新增PHP7.0和PHP7.1版本 | Godaddy美国主机中文指南...

    自从上次GoDaddy虚拟主机取消PHP5.3以下版本后,近日再次做出调整.小编登录GoDaddy Linux主机的cPanel控制面板时发现,已经新增了PHP7.0和PHP7.1两个版本.目前GoD ...

  2. php7.1函数,PHP7.1常用新特性和函数

    在php7发布了之后,官方又紧接着发布了php7.1.php7.2,我们也接着使用了新版本.接下来就说说7.1有那些新的特性. Nullable types 在7的时候,如果使用了强类型就必须传递或者 ...

  3. 宝塔php7.4通用拓展需要安装_bt宝塔面板php7.3、php7.4不支持ZipArchive解决方法

    宝塔面板php7.3版本不支持ZipArchive导致程序无法后台直接更新的解决方法 在SSH命令行界面执行以下语句: cd /www/server/php/73/src/ext/zip/ /www/ ...

  4. php7安装xhprof,PHP7 下安装并使用 xhprof 性能分析工具

    xhprof 的安装 cd ~ git clone https://github.com/longxinH/xhprof 安装 xhprof cd xhprof/extension/ /opt/php ...

  5. larver php7.0,关于PHP7.0与PHP5.6下Laravel博客应用性能对比分析详解

    目前我安装的 Homestead 虚拟机版本是 2.1.8: 该版本 Homestead 上预装的 PHP 版本是 5.6.15: 我们使用 ab 命令(Apache 提供的性能测试工具)在该版本中测 ...

  6. 【PHP】PHP7 下安装并使用 xhprof 性能分析工具

    该 xhprof 版本是从 https://github.com/longxinH/xhprof 获取 git clone https://github.com/longxinH/xhprof 安装 ...

  7. php7 php5 区别,php7与php5的区别有哪些?

    PHP7距正式发布以及有挺长时间了,刚出道就号称比旧版本快了几倍,各种开源框架或系统运行在PHP7上速度效率提高了几倍.那么php7和php5之间的区别是什么? php5与php7之间的区别: 1.性 ...

  8. 新浪微博php7升级实践,PHP7线上system time飙高问题

    最近刚刚全量上线PHP7,经过一晚发现个别机器的PHP-FPM占用CPU很高,整机top查看system time非常高. 通过strace查看PHP-FPM的系统调用发现存在频繁mmap/munma ...

  9. php7的浮点数,php7.1浮点数运算问题

    最近在项目中遇到一个问题,测试服务器接口返回金额精度缺失,导致app解析不正确发生闪退.调试后发现浮点数在json_encode后损失了精度,如下图所示. 网上说是因为php7.1版本的seriali ...

最新文章

  1. Quartus 13.1安装心得
  2. Leetcode1703. 得到连续 K 个 1 的最少相邻交换次数[C++题解]:难(货仓选址加强版+滑动窗口+前缀和)
  3. 智慧办公的AI博弈——看飞企互联如何接招!
  4. 【Rational Rose使用笔记】用例图
  5. 使用Linux curl命令获取本机公网IP地址
  6. HTTP(超文本传输协议)
  7. 见证激情燃烧的汤姆·彼得斯(Tom Peters)
  8. Docx模板引擎示例
  9. 3D Object Detection入门——PointRCNN代码学习
  10. php中传址调用,PHP中foreach引用传地址
  11. 用ODBC方式操作dbf文件
  12. Java 方法重载和覆盖重写的区别及注意事项
  13. CV之FR:基于某AI公司的API接口基于人脸识别实现计算人脸相似度(计算两张人脸图片相似度进而判断否为同一个人)—利用人工智能算法判断相似度极高的国内外明星案例应用
  14. 利用小程序快速生成App,只需七步
  15. Divergence-Free Smoothed Particle Hydrodynamics
  16. DNS的作用和解析过程描述
  17. python调用WinRAR暴力获取压缩密码 用网址做解压密码
  18. 一个故事告诉你,压力真的可以击垮一个人
  19. python s append_详细介绍pandas的DataFrame的append方法使用
  20. 字符间距加宽5磅怎么设置_word的字符间距加宽1period;2磅

热门文章

  1. 修改Oracle数据库字符集
  2. HDU_2795 Billboard(线段树)
  3. DNS中实现父子域,以及授权和转发
  4. 30天敏捷生活(3):设计你的生活看板
  5. stream 的方式遍历(亲测)
  6. rabbitmq管理界面的使用
  7. PHP扩展高性能日志系统SeasLog简单上手
  8. PHP类实例教程(七):析构函数与PHP的垃圾回收
  9. linux下为php添加curl扩展的方法
  10. Kafka 入门 and kafka+logstash 实战应用