windows下安装PHP的扩展xhprof_保罗森的博客-程序员宅基地

技术标签: dot  PHP  windows xhprof  

1.下载扩展:

windows:http://windows.php.net/downloads/pecl/releases/xhprof/0.10.6/

Linux:https://github.com/phacility/xhprof 或http://pecl.php.net/package/xhprof【下载最新版 网上分享的旧版有BUG (后面说)】

注意:

1.1 windows版本一定要下载PHP版本对应的xhprof不然无效

1.2 32位64位最好对应;我电脑是64的 但我下载的是32位的5.4 也能使用;

1.3 Liunx版本有写好的例子以及图形显示代码,也下载一份

2.安装

2.1 解压下载的windows版

2.2 将windows版的dll文件放到PHP的扩展目录 修改PHP.ini如下

[xhprof]  
extension=php_xhprof.dll  
; directory used by default implementation of the iXHProfRuns  
; interface (namely, the XHProfRuns_Default class) for storing  
; XHProf runs.  
xhprof.output_dir="D:/phpStudy/PHPTutorial/tmp/xhprof"  
2.3 out_dir 定义输出文件的存放位置 我用的phpstudy集成环境就存放在了tmp下

2.4 重启apache,查看phpinfo即可(如果下载的版本和PHP版本不一致 重启也看不见扩展的)

3.使用

3.1 解压下载的Linux版本

3.2 将examples xhprof_html xhprof_lib目录移到自己的PHP工作目录并按需求重命名(我将后两个文件移到examples目录了)

3.3 运行index.php  http://localhost/xhprof/;index.php源码如下

<?php
function bar($x) {
  if ($x > 0) {
    bar($x - 1);
  }
}

function foo() {
  for ($idx = 0; $idx < 5; $idx++) {
    bar($idx);
    $x = strlen("abc");
  }
}

// start profiling
xhprof_enable();

// run program
foo();

// stop profiler
$xhprof_data = xhprof_disable();

// display raw xhprof data for the profiler run
print_r($xhprof_data);


include_once  "./xhprof_lib/utils/xhprof_lib.php";
include_once "./xhprof_lib/utils/xhprof_runs.php";

// save raw data for this profiler run using default
// implementation of iXHProfRuns.
$xhprof_runs = new XHProfRuns_Default();

// save the run under a namespace "xhprof_foo"
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");//查看分析结果需要用到

echo "---------------\n".
     "Assuming you have set up the http based UI for \n".
     "XHProf at some address, you can view run at \n".
     "http://xhprof_html文件所在目录地址/index.php?run=$run_id&source=xhprof_foo\n";//xhprof_html文件所在目录地址一定给对
3.3.1 关于xhprof_enable函数 提供了两个参数 xhprof_enable ([ int $flags = 0 [, array $options ]] )

flags 该参数用于为剖析结果添加额外的信息,该参数的值使用以下宏,如果需要提供多个值,使用|进行分隔。

XHPROFFLAGSNO_BUILTINS 跳过所有的内置函数

XHPROFFLAGSCPU 添加对CPU使用的分析

XHPROFFLAGSMEMORY 添加对内存使用的分析 

注:在Linux环境下,XHPROFFLAGSCPU会造成比较高的系统负载,因此不建议使用,而推荐只使用XHPROF_FLAGS_MEMORY

3.4 查看分析:http://localhost/xhprof/xhprof_html/index.php?run=5a5ede10a5244&source=xhprof_foo

3.5 点击页面中间的[View Full Callgraph]可查看图形分析结果

4.关于View Full Callgraph

打开View Full Callgraph可能会出现如下错误:

4.1 

failed to execute cmd: " dot -Tpng". stderr: `'dot' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 '
这是因为本地没有安装Graphviz2.38或给定dot命令路径不对,下载地址http://www.graphviz.org/download/ 或者百度下载http://rj.baidu.com/soft/detail/19179.html?ald

下载之后正常安装即可 即可安装路径 我的安装路径是D:\Program Files\Graphviz2.38

4.2 修改xhprof\xhprof_lib\utils\callgraph_utils.php的第110行如下

  //$cmd = " dot -T".$type;
  $cmd = '"D:\Program Files\Graphviz2.38\bin/dot" -T'.$type;
4.3 再次运行可能会报错

Warning: proc_open(): CreateProcess failed, error code - 267 in D:\phpStudy\PHPTutorial\WWW\xhprof\xhprof_lib\utils\callgraph_utils.php on line 114
failed to execute cmd ""D:\Program Files\Graphviz2.38\bin/dot" -Tpng"
出现这种状况的原因下载了旧的Liunx版本的UI,在112行修改如下

  //$process = proc_open($cmd, $descriptorspec, $pipes, "/tmp", array());
  $process = proc_open($cmd, $descriptorspec, $pipes,sys_get_temp_dir());

或者直接在D盘根目录下创建一个tmp文件即可

5.关于xhGUI

PHP 性能分析第一篇: Xhprof & Xhgui 介绍

PHP 性能分析第二篇: Xhgui In-Depth

PHP 性能分析第三篇: 性能调优实战

6总结

记得xhprof_html与xhprof_lib在同一目录,因为xhprof_html包含了xhprof_lib,如更改目录 记得修改xhprof_html的代码;

以上是我在安装时候遇到一些问题

其它问题 见官方手册 http://php.net/manual/zh/book.xhprof.php


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/slyjit/article/details/79084214

智能推荐

MinIO实现分布式文件服务_minio的getaccesskey-程序员宅基地

`Minio`是个基于`Golang`编写的开源对象存储套件,基于`Apache License v2.0`开源协议,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用,例如`NodeJS`、`Redis`、`MySQL`等。_minio的getaccesskey

使用SecureCRT进行端口转发_crt port forwarding-程序员宅基地

总共有3台机器,我自己的笔记本,跳转机器,_crt port forwarding

樱花的季节,教大家用canvas画出飞舞的樱花树_matlab画图樱花飘落-程序员宅基地

又到了樱花的季节,教大家使用canvas画出飞舞的樱花树效果。 废话少说,先看效果。 演示效果地址:http://suohb.com/work/tree4.htm 查看演示效果 第一步..._matlab画图樱花飘落

17.黑客的PYTHON脚本基础-程序员宅基地

基本的脚本编程能力对于黑客来说十分必要。如果你不会脚本,这意味着降低了你成功的可能性,且增加了你被反病毒软件、入侵检测系统和执法部门检测到的可能性。如果你有黑客脚本编程的经历,可以将你的黑客水平提升一个大层次。  前面介绍了bash脚本基础和编写mysql数据的扫描脚本MySQLScanner.sh。在这里会提及被黑客使用最广泛的脚本语言:Python  sqlmap,scapy...

easeInOutCubic()用法-程序员宅基地

滚动动画自然_easeinoutcubic

Android实现定时器App(线程的使用,跨线程更新UI)-程序员宅基地

一.运行效果点击启动计时点击停止计时二.项目情况本项目主要学习二点:线程的使用跨线程更新UI1.项目源代码activity_main.xml 前端代码<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout ="http://schemas.android.com/apk/res/android" xmlns_定时器app

随便推点

怎么注册tk域名_新.tk域名免费注册教程-程序员宅基地

笔者在以前曾经写过一篇介绍如何注册免费的.tk域名的图文教程。不过因为tk域名官网改版,从而导致教程图片和步骤与官方网站不一致,很多新手朋友都来询问,现给大家提供全新的.tk域名免费注册教程。1、注册一个tk用户,并登录tk官网。tk给大家提供了两种注册方式,可以使用其它的社会化网站的帐号或者使用你的邮箱进行注册,如下图:2、回到tk域名注册页面,点击右上角按钮,可以自由选择简体中文、繁体等在内的..._tk官网

memcached client -- spymemcached使用_spymemcached memcachedclientapi-程序员宅基地

spymemcached是一个memcached的客户端http://code.google.com/p/spymemcached/ 测试代码如下:1.SpyMemcachedConstantsimport java.util.concurrent.TimeUnit;public interface SpyMemcachedConstants { public _spymemcached memcachedclientapi

Browser Security-超文本标记语言(HTML)-程序员宅基地

Browser Security-超文本标记语言(HTML) 瞌睡龙 · 2013/06/19 18:55 重要的4个规则:1 &符号不应该出现在HTML的大部分节点中。2 尖括号<>是不应该出现在标签内的,除非为引号引用。3 在text节点里面,<左尖括号有很大的危害。4 引号在标签内可能有危害,具体危害取决于存在的位置,但是在t...

Soul网关发布2.1.X之后,它到底有多方便?-程序员宅基地

点击上方“朱小厮的博客”,选择“设为星标”后台回复”加群“加入公众号专属技术群Soul 网关自从去年10月我开源以来,经历了一年的事情,接受到了来自社区很多朋友的建议,并进行持续不断的优...

IP碎片攻击-程序员宅基地

IP碎片攻击指的是一种计算机程序重组的漏洞。1. 为什么存在IP碎片链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节.

DES子密钥计算具体步骤_des密钥-程序员宅基地

DES子密钥计算步骤?1.输入原密钥 例如:K=12345679ABCDEF2.输出他的二进制K=0001 0010 …3.根据给出的换位表例如(7位*8=56位)置换表1(57 49 41 33 25 17 9)……注意(每八位是一个奇数偶数校验位,不参与运算)例如第一位是输入密钥第57位上的数据,第二位是第49位上的数据,以此类推。4.可以得到56位的新密钥K+=1111000 0110011 …5.将其分成左右两部分,分别是28位,C0=。。。D0=。。。6.对于C0,D_des密钥