[关闭]
@lgh-dev 2017-12-06T06:58:27.000000Z 字数 6654 阅读 920

现代化PHP语言笔记-分析

PHP


分析应用的性,
1、基准性能测试工具
Apache Bench(http://bit.ly/apache-bench)和Siege(http://www.joedog.org/siege-home/),找出性能问题。基准测试工具的作用是从外部测试性能,比如测试同时有多少用户和多少请求访问应用中制定的URL。测试结束后,测试工具会告诉你每秒能承受多少请求。如果性能问题不明显,就要使用分析器。
2、分析器的种类:
分析器分两类,一种在开发环境中使用,一种在生产环境中使用。
Xdebug分析结果显示工具:KCacheGrind(http://kcachegrined.sourceforge.net/) 和 WinCacheGrind(http://sourceforge.net/projects/wincachegrind/)是两个不错的选择。
Xdebug是最流行的PHP分析器之一,使用它分析应用的调用堆栈,能轻易找出瓶颈和性能问题。尽量把分析器的生成结果保存在PHP应用的最顶层目录中。这样在开发的过程中便于找到并查看分析结果。

XHProf 是个比较新的PHP应用分析器,由FaceBook开发,在开发环境和生产环境中都能使用。他搜集的信息不如Xdebug多,不过消耗的系统资源比较少,适合再生产环境中使用。
安装XHProf,添加如下配置

  1. extension=xhprof.so
  2. extension=mongo.so
  3. PHPphp.ini的配置文件中。

XHProf和XHGUI结合在一起使用效果最好。XHGUI是facebook为XHProf开发的配套的Web应用。用于查看XHProf的分析结果。XHGUI是使用PHP开发的.
更多的PHP分析知识:
http://www.sitepoint.com/the-need-for-speed-profiling-with-xhprof-and-xhgui/
https://blog.engineyard.com/2014/profiling-with-xhprof-xhgui-part-1
https://blog.engineyard.com/2014/profiling-with-xhprof-xhgui-part-2
https://blog.engineyard.com/2014/profiling-with-xhprof-xhgui-part-3

PHP的未来future

1、HHVM 全称是Hip Hop Virtual Machine ,是一种PHP的引擎,HHVM的即时编译器性能比PHP-FPM好很多倍。
2、Hack是一种新的服务端语言,在PHP语言的基础上修改而来。Hack基本上兼容PHP代码,不过扩展了PHP的语言,增加了一些特性:严格类型,新的数据结构和实时类型检查服务器。
3、PHP是传统意义上的解释性语言,在命令行或Web服务器调用的解释器解释PHP代码之前,PHP代码就是PHP代码。PHP解释器会解释PHP脚本,把代码转换成一系列Zend操作码(机器码指令),再把这些操作码交给Zend Engine执行。
解释性语言比编译性语言慢很多,因为每次执行的时候都要将解释性语言转为机器码,消耗了额外的系统资源。
4、HHVM先把PHP代码转换为一种字节码中间格式,而且会缓存转换得到的字节码,然后用JIT编译器转换并优化缓存的字节码,将其变为x86_64机器码。HHVM的JIT编译器提供了很多底层性能优化措施,而且只有当Web服务器请求PHP脚本时,HHVM才会即时把字节码编译成机器码。
5、HHVM不适合所有人使用,提升性能有更容易的方式,例如减少请求数,优化数据库查询等,都能提升应用的性能,减少响应时间。应该先考虑从本身优化,在考虑外部优化。
6、HHVM参考资源:
- 扩展 [http://bit.ly/fb-extensns],查看HHVM兼容的扩展。
- 框架的等价性(http://hhvm.com/frameworks/), 追踪HHVM对流行框架的兼容性
- 问题追踪平台(http://bit.ly/fb-hhvm),追踪为解决的HHVM问题。
- 常见问题(https://github.com/facebook/hhvm/wiki/FAQ)
- 博客(http://hhvm.com/blog)

安装

配置

扩展

使用Supervisord监控HHVM

  1. commandSupervisord使用这个命令启动应用的进程;
  2. autostart:这个设置让Supervisord进程启动时启动应用;
  3. autorestart: 这个设置让Supervisord在程序崩溃时重启应用程序;
  4. startretries: Supervisord认定程序进程崩溃之前尝试启动次数;
  5. user: 拥有应用程序进程的用户。

HHVM、FastCGI和Nginx

静态类型和动态类型

HHVM/Hack和PHP的比较

安装PHP

1、Ubuntu

2、Centos7

添加EPEL仓库
  1. sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
  2. sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
安装PHP

OSX系统

源码构建

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注