PHP性能优化工具xhprof安装配置

 更新时间:2016年11月25日 15:27  点击:1419
XHProf是一个分层PHP性能分析工具。它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况。一个函数的开销,可细分成调用者和被调用者的开销,XHProf数据收集阶段,它记录调用次数的追踪和包容性的指标弧在动态callgraph的一个程序。它独有的数据计算的报告/后处理阶段。

编译安装配置

wget http://pecl.php.net/get/xhprof-0.9.4.tgz
tar zxvf xhprof-0.9.4.tgz
cd xhprof-0.9.4
cd extension/
/usr/bin/phpize
./configure
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
vim /usr/local/php/etc/php.ini

EOF<<<
[xhprof]
extension=xhprof.so;
xhprof.output_dir=/home/wwwroot/iamle.com/xhprof
EOF

mkdir -p /home/wwwroot/iamle.com/xhprof
cd ..
cp -rv examples/ xhprof_html/ xhprof_lib/ /home/wwwroot/iamle.com/xhprof
/etc/init.d/php-fpm reload

例子用法

http://localhost/xhprof/examples/sample.php

http://localhost/xhprof/xhprof_html/index.php?run=5455f9208a2eb&source=xhprof_foo

xhprof的名词解释

Function Name 函数名
Calls 调用次数
Calls% 调用百分比
Incl. Wall Time (microsec) 调用的包括子函数所有花费时间 以微秒算(一百万分之一秒)
IWall% 调用的包括子函数所有花费时间的百分比
Excl. Wall Time (microsec) 函数执行本身花费的时间,不包括子树执行时间,以微秒算(一百万分之一秒)
EWall% 函数执行本身花费的时间的百分比,不包括子树执行时间
Incl. CPU(microsecs) 调用的包括子函数所有花费的cpu时间。减Incl. Wall Time即为等待cpu的时间
减Excl. Wall Time即为等待cpu的时间
ICpu% Incl. CPU(microsecs)的百分比
Excl. CPU(microsec) 函数执行本身花费的cpu时间,不包括子树执行时间,以微秒算(一百万分之一秒)。
ECPU% Excl. CPU(microsec)的百分比
Incl.MemUse(bytes) 包括子函数执行使用的内存。
IMemUse% Incl.MemUse(bytes)的百分比
Excl.MemUse(bytes) 函数执行本身内存,以字节算
EMemUse% Excl.MemUse(bytes)的百分比
Incl.PeakMemUse(bytes) Incl.MemUse的峰值
IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比
Excl.PeakMemUse(bytes) Excl.MemUse的峰值
EPeakMemUse% EMemUse% 峰值百分比

前面一篇文章告诉各位简单的安装Redis的方法了,下面我们进行升级了实现在linux中编译安装PHP7并安装Redis扩展Swoole扩展的方法。

编译安装PHP7并安装Redis扩展Swoole扩展

在编译php7的机器上已经有编译安装过php5.3以上的版本,从而依赖库都有了

本php7是编译成fpm-php 使用的,

如果是apache那么编译参数应该为

--with-apxs2=/usr/local/apache/bin/apxs

编译安装php7

wget -c http://www.php.net/distributions/php-7.0.0.tar.gz
tar zxvf php-7.0.0.tar.gz
cd php-7.0.0

./configure \
--prefix=/usr/local/php7 \
--with-config-file-path=/usr/local/php7/etc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir \
--with-freetype-dir=/usr/local/freetype \
--with-jpeg-dir -\
-with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--with-mcrypt \
--enable-ftp \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-gettext \
--disable-fileinfo \
--enable-opcache

make ZEND_EXTRA_LIBS='-liconv'

make install

cp php.ini-production /usr/local/php7/etc/php.ini

cd ..

编译安装php7的redis扩展支持


wget -c https://github.com/phpredis/phpredis/archive/php7.zip
unzip php7.zip

cd phpredis-php7
/usr/local/php7/bin/phpize
./configure --with-php-config=/usr/local/php7/bin/php-config
make
make install
cd ..

/usr/local/php7/etc/php.ini

中加入

extension=redis.so

编译安装php7的swoole


wget -c https://github.com/swoole/swoole-src/archive/swoole-1.7.21-stable.tar.gz
tar zxvf swoole-1.7.21-stable.tar.gz
cd swoole-src-swoole-1.7.21-stable/
/usr/local/php7/bin/phpize
./configure --with-php-config=/usr/local/php7/bin/php-config
make
make install
cd ..

/usr/local/php7/etc/php.ini

中加入

extension=swoole.so

PHP7安装Redis非常的简单只需要几行命令就可以了,下面我们为各位介绍windows及linux中PHP7安装Redis的方法。

linux中PHP7安装Redis扩展

1.依次执行

wget -c https://github.com/phpredis/phpredis/archive/php7.zip
unzip php7.zip

cd phpredis-php7
/YouPath/phpize
./configure --with-php-config=/YouPath/php-config
make
make install

2.加入php.ini
3.重启httpd
4.查看探针

windowsPHP7安装Redis扩展

这里提供php5.3版本的redis的php扩展压缩包(里面有个dll):https://github.com/nicolasff/phpredis/downloads

解压后把dll放到php的ext目录下,打开php.ini,增加一行:

extension=php_redis.dll

然后重启apache即可

例子

<?php

//获取投票的信息的ID
$aid = isset($_GET['aid']) ? ereg_replace("[^0-9]", "", $_GET['aid']) : 0;

//当前投票的数字,指的是在redis中的数据
$this_click_num = 0;

if($aid>2){
 //设定写回的投票数的最大值,到了此值就写回mysql
 $update_till_num = 50;
 
 //创建redis对象
 $r = new Redis();
 $r->connect('127.0.0.1',6379);
 //得到现在是第几个数据了
 $this_click_num = $r->get('count_xin_newgame:'.$aid);
 //点击数加1
 $r->set('count_xin_newgame:'.$aid,$this_click_num+1);
 if($this_click_num>=$update_till_num)
 {
  //如果点击数超过了设定数,那么就把数据写到mysql
  if($this_click_num>$update_till_num)
  require_once(dirname(__FILE__)."/db.php");
  //更新数据库
  $db->ExecuteNoneQuery(
   "UPDATE `addonnewgame`
    SET `game_num` = game_num + '{$update_till_num}'
    WHERE `dede_addonnewgame`.`aid` ={$aid};"
  );
  //重置投票数目为0
  $r->set('count_xin_newgame:'.$aid,0);
 }
 $r->setTimeout('count_xin_newgame:'.$aid,7*24*60*60);
 exit($this_click_num);
}
?>

下面我们来为各位介绍一篇关于Linux和windows上安装php7与安装 yaf例子,希望这篇文章能够帮助到各位朋友,有兴趣的朋友可以进来看看。

1.windows上安装php7 alpha只需要从官网上 http://windows.php.net/qa/ 下载然后直接配置就可以,如果你不会你可以下载 PHP Manager,直接配置就可以了。这个时候需要测试,打开命令行窗口,然后到你的 php7 目录下,php -m如果弹出如下的窗口
1111

这时候因为你缺少Visual C++ Redistributable Package for Visual Studio 2015你可以点击这里下载
http://www.microsoft.com/zh-CN/download/details.aspx?id=46881,安装后就可以了。

linux

Linux 和以前一样安装,但是你会发现php7 alpha并不和以前 dev 一样,少了--with-mysql的选项,也就是不加载这个扩展了,以后就用mysqli和Pdo吧

从官方下载安装包 https://downloads.php.net/~ab/

wget https://downloads.php.net/~ab/php-7.0.0alpha1.tar.gz
#解压
tar zxf php-7.0.0alpha1.tar.gz
#进入目录
cd  php-7.0.0alpha1
#configure
--prefix=/usr/local/php7 \
--with-config-file-path=/usr/local/php7/etc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql/ \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--with-mcrypt \
--enable-ftp \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip--enable-soap \
--without-pear \
--with-gettext \
--disable-fileinfo \
--enable-maintainer-zts
#编译安装
make ZEND_EXTRA_LIBS='-liconv' && make install
#配置
cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php7-fpm
cp php.ini-production      /usr/local/php7/etc/php.ini
#然后在自己配置下php-fpm.conf
安装YAF
#下载
git clone https://github.com/laruence/php-yaf.git
cd php-yaf
#查看所有分支,这时候你就看到了php7的分支
git branch -a
git checkout -b php7 origin/php7
#开始编译安装
/usr/local/php7/bin/phpize
./configure --with-php-config=/usr/local/php7/bin/php-config
make && make install
#配置
vim /usr/local/php7/etc/php.ini
#加入如下这行
extension = 安装完成显示的目录地址/yaf.so

[!--infotagslink--]

相关文章

  • Laravel4安装配置的方法

    如果我们需要安培Laravel4的话最php最低要求要在php5.3.7版本并且我们需要把mcrypt与openss这两个扩展开启才可以,具体步骤我们参考下文。 前面我们介绍我了 com...2016-11-25
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • 带你了解PHP7 性能翻倍的关键

    20岁老牌网页程序语言PHP,最快将在10月底释出PHP 7新版,这是十年来的首次大改版,最大特色是在性能上的大突破,能比前一版PHP 5快上一倍,PHP之父Rasmus Lerdorf表示,甚至能比HHVM虚拟机下的PHP程序性能更快。HHVM 是脸书为自...2015-11-24
  • Angular性能优化之第三方组件和懒加载技术

    这篇文章主要介绍了Angular性能优化之第三方组件和懒加载技术,对性能优化感兴趣的同学,可以参考下...2021-05-11
  • 利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)

    这篇文章主要介绍了利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化),本文给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-24
  • JavaScript提高网站性能优化的建议(二)

    这篇文章主要介绍了JavaScript提高网站性能优化的建议(二)的相关资料,需要的朋友可以参考下...2016-07-29
  • 提升jQuery的性能需要做好七件事

    这篇文章主要介绍了提升jQuery的性能需要做好的七件事,希望真的帮助大家提升jQuery性能,需要的朋友可以参考下...2016-01-14
  • php测试性能代码

    php测试性能代码 function microtime_float () { list ($usec, $sec) = explode(" ", microtime()); return ((float) $usec + (float) $sec); } functio...2016-11-25
  • PHP Libevent扩展安装配置及简单应用

    Libevent 是一个用C语言编写的、轻量级的开源高性能网络库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,下文我们就一起来看PHP Libevent扩展安装...2016-11-25
  • Ubuntu Server 18.04.5 LTS服务器版安装配置图解教程

    Ubuntu分为桌面版(desktop)和服务器版(Server),下面为大家介绍服务器版本Ubuntu Server 18.04.5 LTS的详细安装过程,需要的朋友可以参考下...2021-02-01
  • css中空路径对页面性能影响的解决方案

    文章介绍了css中空路径对页面性能影响的解决方案,这个可能很多美工朋友不会去注意这一点,下面我们来看看吧。 在写 CSS 的时候,用 background:url(#) 还是会对页面进...2017-07-06
  • Redis 执行性能测试

    这篇文章主要介绍了Redis 执行性能测试的方法,文中讲解非常细致,帮助大家更好的理解和学习redis,感兴趣的朋友可以了解下...2021-01-15
  • 如何用Node.js编写内存效率高的应用程序

    这篇文章主要介绍了如何用Node.js编写内存效率高的应用程序,对Node.js感兴趣的同学,可以参考下...2021-05-01
  • PHPStorm主题安装配置方法详解

    由于在php开发时很多函数命令都只记得一个部份,如果要全写还得百度,后来听说有一个PHPStorm可实现自动补全,我就下载了一个并安装配置了,下面给各位朋友介绍。 为...2016-11-25
  • 浅析Mysql Join语法以及性能优化

    一.Join语法概述join 用于多表中字段之间的联系,语法如下:复制代码 代码如下:... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditionatable1:左表;table2:右表。JOIN 按照功能大致分为如下三类:INNER JOIN(内连接,或...2014-05-31
  • javascript性能优化之DOM交互操作实例分析

    这篇文章主要介绍了javascript性能优化之DOM交互操作技巧,结合实例形式总结分析了JavaScript针对DOM操作过程中的各种常见优化操作技巧,需要的朋友可以参考下...2015-12-14
  • Windows下PHP安装配置PEAR的方法

    PEAR是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写。PEAR库更新很快,它是一个强大的代码仓库,每个PHP程序员都应该掌握的工具。 Windows...2016-11-25
  • C#导出数据到excel如何提升性能

    这篇文章主要介绍了C#导出数据到excel如何提升性能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-13
  • MySQL单表百万数据记录分页性能优化技巧

    自己的一个网站,由于单表的数据记录高达了一百万条,造成数据访问很慢,Google分析的后台经常报告超时,尤其是页码大的页面更是慢的不行...2016-09-18
  • C#中Dynamic和Dictionary性能比较

    开发中需要传递变参,考虑使用 dynamic 还是 Dictionary,dynamic 的编码体验显著优于 Dictionary,如果性能差距不大的话,我会选择使用dynamic。下面通过本文给大家详细介绍下C#中Dynamic和Dictionary性能比较,一起看看吧...2020-06-25