graphviz php,Graphviz

Xhprof在windows下点击[View Full Callgraph]调用graphviz软件时。

警告Warning: proc_open() [function.proc-open]: CreateProcess failed, error code – 0 in

并提示

failed to execute cmd " D:/graphviz-2.38/release/bin/dot -Tpng"

位置是xhprof_lib/utils/callgraph_utils.php文件下xhprof_generate_image_by_dot函数

windows下

$cmd = " dot -T".$type;

需要替换成

$cmd = " D:/graphviz-2.38/release/bin/dot -T".$type;

问题就出现在这行代码

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

需要改成

$process = proc_open($cmd, $descriptorspec, $pipes);

或者是建立相应的tmp文件夹,因为默认是不存在tmp文件夹的。尝试在网站根目录建立tmp文件夹但是还是保存,于是改成了在当前目录。

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

//修改后的正确代码

function xhprof_generate_image_by_dot($dot_script, $type) {

//echo($dot_script);

$descriptorspec = array(

// stdin is a pipe that the child will read from

0 => array("pipe", "r"),

// stdout is a pipe that the child will write to

1 => array("pipe", "w"),

// stderr is a pipe that the child will write to

2 => array("pipe", "w")

);

//$cmd = " dot -T".$type; //linux下

//1.修改graphviz目录

$cmd = " D:/graphviz-2.38/release/bin/dot -T".$type;//windows下

//2.tmp文件夹处理

$process = proc_open($cmd, $descriptorspec, $pipes);

if (is_resource($process)) {

fwrite($pipes[0], $dot_script);

fclose($pipes[0]);

$output = stream_get_contents($pipes[1]);

$err = stream_get_contents($pipes[2]);

if (!empty($err)) {

print "failed to execute cmd: \"$cmd\". stderr: `$err'\n";

exit;

}

fclose($pipes[2]);

fclose($pipes[1]);

proc_close($process);

return $output;

}

print "failed to execute cmd \"$cmd\"";

exit();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值