制作一个自己的xhprof测试平台
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测试平台的更多相关文章
- 一个基于集成jenkins的测试平台
(一)先看测试业务的情况: 有各种各样的任务包括代码构建.部署搭建.单元测试.功能自动化测试(包括许多模块的功能自动化测试,有十几个居多),性能测试.正确性验证:复杂一点的是这些任务在不同的测试阶段中 ...
- 用JS制作一个信息管理平台完整版
前 言 JRedu 在之前的文章中,介绍了如何用JS制作一个实用的信息管理平台. 但是那样的平台功能过于简陋了,我们今天来继续完善一下. 首先我们回顾一下之前的内容. 1.JSON的基础知识 ...
- 微服务平台(Micro Service Platform : MSP)旨在提供一个集开发、测试、运维于一体的开发者专属平台,让开发者能快速构建或使用微服务,让开发更简单,让运维更高效。
微服务平台(Micro Service Platform : MSP)旨在提供一个集开发.测试.运维于一体的开发者专属平台,让开发者能快速构建或使用微服务,让开发更简单,让运维更高效. MSP采用业界 ...
- 使用CocosSharp制作一个游戏 - CocosSharp中文教程
注:本教程翻译自官方<Walkthrough - Building a game with CocosSharp>,官方教程有很多地方说的不够详细,或者代码不全,导致无法继续,本人在看了G ...
- 打造专属测试平台4-使用Docker部署Django项目
编写完项目代码后,为了稳定的运行,需要将其部署至服务器.这里我选择了Docker去部署Django后端代码. 首先来看看Runoob对Docker的介绍: Docker 是一个开源的应用容器引擎,基于 ...
- 微软官方网站线上兼容测试平台-Browser screenshots
前端开发时最不想做的就是在不同浏览器.平台和分辨率测试网页显示效果,通常这会浮现许多问题,尤其浏览器版本就可能让显示成效完全不同,也只好尽力维持让每一种设备都能正常浏览网页.修改到完全没有问题必须投入 ...
- Optimizely:在线网站A/B测试平台
Optimizely:在线网站A/B测试平台是一家提供 A/B 测试服务的公司.A/B 测试能够对比不同版本的设计,选取更吸引用户眼球的那一款,从而带来更为优化的个人体验.让网站所有者易于对不同版本的 ...
- Testin云测试平台初体验
这几天偶然接触到了一个叫做Testin的云测试平台,经过一番体验,感觉还是不错的,因为里面提供了大量的测试机型,可以针对Android手机的严重碎片化现象做出比较全面的测试,同时Testin的测试内容 ...
- SQL注入测试平台 SQLol -1. 简介与安装
最近下载了SQLol测试了一下,感觉挺好玩的,做一下记录. SQLol是一个可配置得SQL注入测试平台,它包含了一系列的挑战任务,让你在挑战中测试和学习SQL注入语句,SQLol还是比较有创意的项目. ...
随机推荐
- 利用TKinter模块创建GUI窗口
# -*- coding: utf-8 -*- from Tkinter import * root = Tk() # 80x80代表了初始化时主窗口的大小,0,0代表了初始化时窗口所在的位置 ...
- 备份一下alias喽
# 每次grep都显示出行号示出行号 alias grep="grep -n" # grep反向选择并显示行号显示行号 alias vgrep="grep -n -v&q ...
- 理解EntityFramework两个核心类型的职责 DbSet和D'bContext
DbSet与DbContext是多对一的关系DbSet是实体对象的集合,提供了实现CRUD的相应方法DbContext封装与数据库和数据模型相关的功能,依据数据实体状态创建SQL命令,将数据更改保存到 ...
- LeetCode Array Easy 27. Remove Element 解题
Given an array nums and a value val, remove all instances of that value in-place and return the new ...
- dubbo-源码阅读之服务订阅
配置例子 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://w ...
- 【Luogu】【关卡2-11】简单数学问题(2017年10月)【还差三道题】
火星人 麦森数 P1403 [AHOI2005]约数研究 f(n)表示n的约数个数,现在给出n,要求求出f(1)到f(n)的总和. 解答:有几个1做约数的个数 = n /1; 有几个2做约数的个数 = ...
- 安卓8.0真机运行appium1.4遇到的问题:运行自动化脚本,手机自动安装 settings.apk和unclock.apk,执行脚本时提示安装UnicodeIME-debug.apk失败,怎么关掉自动安装?
运行自动化脚本,手机自动安装 settings.apk和unclock.apk,执行脚本时提示安装UnicodeIME-debug.apk失败,怎么关掉自动安装? 这3个apk的目录分别是: D:\P ...
- 数据结构(c语言版,严蔚敏)第1章绪论
第1章严蔚敏
- Yii2数据库操作 事务
Yii2 DAO http://blog.csdn.net/hzqghost/article/details/44116039
- 【LeetCode 6】Z 字形变换
题目链接 [题解] 还想着模拟这个过程.然后发现只有行有用啊!... 那就建个rows大小的字符串数组存每行从左到右的字符就行啦.. 然后就是i从1变到n然后又变回1反复就好了. 最后把1..rows ...