一些工具整理

EditorConfig

EditorConfig用于在不同操作系统或编辑器之间保持统一的风格,比如空格与TAB、回车与换行等。TAB的宽度可以设置为4个空格或8个,如果按空格来显示就会造成缩进的错开,样式不一致。另外还有windows下的文件在linux下打开行尾^M的情况,这是因为UNIX格式的换行符为OA<LF\>,DOS的换行符为OD OA<CR><LF>其实就显示为了^M。

不同项目的缩进在空格与TAB的选择上也有区别,比如CIFuelPHP中使用的是TAB,现在了解的dagger中使用的是4个空格,此时就可以使用EditorConfig,通过过修改配置文件.editorconfig,设置indent_style=space indent_size=4就行了,项目之外的依旧是TAB。

官网上直接下载对应编辑器的插件,安装完成后在项目根目录下新建.editorconfig文件,可设置root、end_of_line、charset、indent_style、indent_size等。

xhprof

xhprof是一个分层PHP性能分析工具,可以获得PHP中具体函数执行时内存使用情况、CPU运行时间等,对于PHP性能的调优很有帮助。

目前最新版本未0.9.4,需要编译安装

1
2
3
4
5
6
7
8
9
wget http://pecl.php.net/get/xhprof-0.9.4.tgz
tar zxvf xhprof-0.9.4.tgz
cd xhprof-0.9.4
cp -r xhprof_html xhprof_lib <directory_for_htdocs> # 应用程序所在目录
cd extension
sudo phpize #phpize不存在则sudo apt-get install php5-dev
./configure --with-php-config=/usr/bin/php-config #whereis查看php-config的具体路径
make
sudo make install

安装完成后会生成xhprof.so,在php.ini中添加如下

1
2
extension=xhprof.so
xhprof.output_dir=<directory_for_storing_xhprof_runs> #生成文件的路径,需要可写权限

此时,我们新建一个test.php文件,测试随机生成100个数然后排序的性能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
// 要测试的php代码
test();
$data = xhprof_disable();
include_once "xhprof_lib/utils/xhprof_lib.php";
include_once "xhprof_lib/utils/xhprof_runs.php";
$objXhprofRun = new XHProfRuns_Default();
$run_id = $objXhprofRun->save_run($data, "xhprof");
$url = 'http://localhost/xhprof_html/?run='.$run_id.'&source=xhprof';
echo $url;
function test() {
for($i = 0; $i < 100; $i++) {
$data[] = mt_rand(1, 10000);
}
sort($data);
}

浏览器访问test.php,得到一个url,访问该url会看到函数的调用、内存CPU的使用情况。

图片

Graphviz

graphviz是贝尔实验室开发的一个开源的工具包,它使用一个特定的DSL(领域特定语言):dot作为脚本语言,然后使用布局引擎来解析此脚本,并完成自动布局。graphviz提供丰富的导出格式,如常用的图片格式,SVG,PDF格式等。使用Graphviz可以让上面的页面更直观漂亮些。

不过在安装graphviz之前需要先安装libpng库,这是因为生成的图片是png格式的,如果没有该库,点击[View Full Callgraph]的时候,提示如下:Error: either we can not find profile data for run_id 4d7f0bd99a12f or the threshold 0.01 is too small or you do not have ‘dot’ image generation utility installed.

1
2
3
4
5
6
7
8
9
10
11
12
13
wget http://ncu.dl.sourceforge.net/project/libpng/libpng16/1.6.17/libpng-1.6.17.tar.xz
tar xvJf libpng-1.6.17.tar.xz #.tar.xz文件的解压方式
cd libpng-1.6.17
./configure
make
sudo make install
wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
tar zxvf graphviz-2.24.0.tar.gz
cd graphviz-2.24.0
./configure
make
sudo make install

这时候点击[View Full Callgraph]就可以看到漂亮的图片了

图片

php console

控制台中调试php:github chrome web store

PHP Ninja Manual

php手册的chrome插件:chrome web store

Chrome MySQL Admin

MySQL 的chrome插件: chrome web store


参考资料

Just a beginner.<br /><a href='https://github.com/yaoshanliang/about' target='_blank'>profile</a>