1

1.首先安装php开发环境,比如lnmp。

2.安装xhprof

ps:

记住从github上面下载(https://github.com/phacility/xhprof),

不要从pecl.php.net站点下载,可能不支持高版本(比如本人使用的php5.4)。

安装步骤:

1.解压文件 unzip

2.cd extension

3./usr/local/php/bin/phpize

4./configure --with-php-config=/usr/local/php/bin/php-config --enable-xhprof

5.make

6.make install

7.cd /usr/local/php/etc

8.vim php.ini 在其中添加

[xhprof]
extension=xhprof.so
xhprof.output_dir="/www/xhprof/tmp" //注意创建此目录

重启lnmp后,查看phpinfo输出信息。查看到xhprof相关信息即代表成功。

或者命令行输入:

php -m |grep xhprof

如果显示xhprof则表示成功:

** 如果是一键安装包安装的lnmp环境,可以使用以下命令,否则找到自己nginx和php的目录重启 **

重启nginx: nginx -s reload

重启phpfpm: /etc/init.d/php-fpm restart

3.搭建一个站点

将代码放在/www/xhprof目录下,拷贝刚才下载到xhprof安装包中的xhprof_html和xhprof_lib2个目录。

创建测试php文件(见代码xhprof_html/test.php)

4.安装扩展使其支持图形化

  • yum update
  • yum -y install dot*
  • yum install graphviz

5. 修改php.ini配置文件

  • 将disable_functions中proc_open删除。
  • 修改参数:auto_prepend_file =/www/xhprof/xhprof_html/header.php
  • 修改参数:auto_append_file =/www/xhprof/xhprof_html/footer.php
  • 可选修改open_basedir参数:open_basedir=/www/xhprof

ps:

open_basedir: 将 PHP 所能打开的文件限制在指定的目录树

用 open_basedir 指定的限制实际上是前缀,不是目录名。

也就是说“open_basedir = /dir/incl”也会允许访问“/dir/include”和“/dir/incls”,如果它们存在的话。

如果要将访问限制在仅为指定的目录,用斜线结束路径名。例如:“open_basedir = /dir/incl/”。

6. 至此该服务器下所有站点都可以产生xphrof相关信息了。

【header.php】

if (extension_loaded('xhprof')) {
include_once '/www/xhprof/xhprof_lib/utils/xhprof_lib.php';
include_once '/www/xhprof/xhprof_lib/utils/xhprof_runs.php';
xhprof_enable(XHPROF_FLAGS_CPU && XHPROF_FLAGS_MEMORY); //为测试test.php里使用这行
//xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY); //线上可以使用这个
}

ps:

XHPROF_FLAGS_NO_BUILTINS (integer)

使得跳过所有内置(内部)函数。

XHPROF_FLAGS_CPU (integer)

使输出的性能数据中添加 CPU 数据。

XHPROF_FLAGS_MEMORY (integer)

使输出的性能数据中添加内存数据。

【footer.php】

if (extension_loaded('xhprof')) {
$profiler_namespace = 'xhprof_foo';
$xhprof_data = xhprof_disable();
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, $profiler_namespace);
echo ""."Table View" . "";
echo " ";
echo ""."Photo View" . "";
}

【test.php】

简单的测试代码

//要测试的代码 开始
for($i=0;$i<10000;$i++){
strtoupper(substr(md5(md5(mt_rand())),1,20));
echo $i.'
';
}
//结束测试代码

制作一个自己的xhprof测试平台的更多相关文章

  1. 一个基于集成jenkins的测试平台

    (一)先看测试业务的情况: 有各种各样的任务包括代码构建.部署搭建.单元测试.功能自动化测试(包括许多模块的功能自动化测试,有十几个居多),性能测试.正确性验证:复杂一点的是这些任务在不同的测试阶段中 ...

  2. 用JS制作一个信息管理平台完整版

      前  言 JRedu 在之前的文章中,介绍了如何用JS制作一个实用的信息管理平台. 但是那样的平台功能过于简陋了,我们今天来继续完善一下. 首先我们回顾一下之前的内容.   1.JSON的基础知识 ...

  3. 微服务平台(Micro Service Platform : MSP)旨在提供一个集开发、测试、运维于一体的开发者专属平台,让开发者能快速构建或使用微服务,让开发更简单,让运维更高效。

    微服务平台(Micro Service Platform : MSP)旨在提供一个集开发.测试.运维于一体的开发者专属平台,让开发者能快速构建或使用微服务,让开发更简单,让运维更高效. MSP采用业界 ...

  4. 使用CocosSharp制作一个游戏 - CocosSharp中文教程

    注:本教程翻译自官方<Walkthrough - Building a game with CocosSharp>,官方教程有很多地方说的不够详细,或者代码不全,导致无法继续,本人在看了G ...

  5. 打造专属测试平台4-使用Docker部署Django项目

    编写完项目代码后,为了稳定的运行,需要将其部署至服务器.这里我选择了Docker去部署Django后端代码. 首先来看看Runoob对Docker的介绍: Docker 是一个开源的应用容器引擎,基于 ...

  6. 微软官方网站线上兼容测试平台-Browser screenshots

    前端开发时最不想做的就是在不同浏览器.平台和分辨率测试网页显示效果,通常这会浮现许多问题,尤其浏览器版本就可能让显示成效完全不同,也只好尽力维持让每一种设备都能正常浏览网页.修改到完全没有问题必须投入 ...

  7. Optimizely:在线网站A/B测试平台

    Optimizely:在线网站A/B测试平台是一家提供 A/B 测试服务的公司.A/B 测试能够对比不同版本的设计,选取更吸引用户眼球的那一款,从而带来更为优化的个人体验.让网站所有者易于对不同版本的 ...

  8. Testin云测试平台初体验

    这几天偶然接触到了一个叫做Testin的云测试平台,经过一番体验,感觉还是不错的,因为里面提供了大量的测试机型,可以针对Android手机的严重碎片化现象做出比较全面的测试,同时Testin的测试内容 ...

  9. SQL注入测试平台 SQLol -1. 简介与安装

    最近下载了SQLol测试了一下,感觉挺好玩的,做一下记录. SQLol是一个可配置得SQL注入测试平台,它包含了一系列的挑战任务,让你在挑战中测试和学习SQL注入语句,SQLol还是比较有创意的项目. ...

随机推荐

  1. 12-python基础—python3中的reduce()

    在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 functools 模块里,需要通过引入 functools 模块来调用 reduce() 函数: from ...

  2. spring 中各个配置文件的说明

    (1)pom.xml pom.xml文件是在整个项目下面,该xml的主要作用是:导入框架的jar包及其所依赖的jar包,导入的jar包是写在<dependencies></depen ...

  3. 域名访问和ip访问区别

    域名访问和ip访问区别 ip访问对应某一台确定的服务器: 域名访问相当于在ip访问的基础上,做了一个反向代理的中间功能.例如:百度,很多人会同时使用,如果使用的是同一台服务器的话,服务器估计会扛不住, ...

  4. Codeforces 745E Hongcow Buys a Deck of Cards 状压DP / 模拟退火

    题意:现在有n张卡片(n <= 16), 每一轮你可以执行两种操作中的一种.1:获得一张红色令牌和一张蓝色令牌.2:购买一张卡片(如果可以买的话),购买的时候蓝色卡片可以充当蓝色令牌,红色同理, ...

  5. 在Eclipse上安装Spring Tool Suite

    . 不装IDE会没有Spring bean configure file Spring Tool Suite是一个基于Eclipse IDE开发环境中的用于开发Spring应用程序的工具,提供了开箱即 ...

  6. web自动化框架抽取示例【Java+selenium】

    web自动化测试框架抽取示例 例子:测试登录模块,对登录的账号和密码进行不同的case校验. 1.1.1 无优化代码login_1 package com.lee.auto.testFrome; im ...

  7. magento开发 -- 修改当前用户的客户组

    $customer = Mage::getSingleton('customer/session')->getCustomer(); $customer->setData( 'group_ ...

  8. 深入理解Magento-第九章-修改、扩展、重写Magento代码

    (博主提示:本章应该不是原作者的第九章,仅作补充和参考) 作为一个开发者的你,肯定要修改Magento代码去适应你的业务需求,但是在很多时候我们不希望修改Magento的核心代码,这里有很多原因,例如 ...

  9. python网络爬虫学习

    网络爬虫 Requests官方中文教程地址:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html Beautiful So ...

  10. HUE工具使用

    1.HUE简介 来源 HUE=HadoopUser Experience,看这名字就知道怎么回事了吧,没错,直白来说就是Hadoop用户体验,是一个开源的Apache Hadoop UI系统,由Clo ...