linux安装vld扩展以及graphviz绘制dot描述的图形
时间:2023年06月23日
/来源:网络
/编辑:佚名
PHP代码的执行实际上是在执行代码解析后的各种opcode。通过vld扩展可以很方便地看到执行过程中的opcode。
VLD是PECL(PHP扩展和应用仓库)的一个PHP扩展,现在最新版本是0.16.0,它的功能是: 显示转储PHP脚本(opcode)的内部显示。简而言之,可以看到PHP程序的OPCODE。 对我们理解PHP内部的运行和优化代码有很大的帮助。 我做的工作就是在此基础上,可以让页面上也能直接看到OPCODE,方便观察,学习。
官方地址:http://pecl.php.net/package/vld
改造地址:https://github.com/midoks/vld
一、安装vld扩展
git clone https://github.com/derickr/vld.git
cd vld
phpize
./configure --with-php-config=/usr/local/php71/bin/php-config --enable-vld
make && make install
echo 'extension=vld.so'>> /usr/local/php71/lib/php.ini
php -m | grep vld
php -d vld.active=1 test.php
从上边的输出可以看到这段代码一共有5个opcode[1]。
vld扩展有下边几个参数。
1)vld.active:是否在执行PHP的同时激活vld——1激活,0不激活(默认不激活)。
2)vld.execute:是否输出程序的执行结果——1输出,0不输出(默认输出)。
3)vld.verbosity:显示更详细的opcode信息,开启后可以显示每个opcode的操作数的类型等信息。
4)vld.skip_prepend:是否跳过php.ini配置文件中auto_prepend_file配置项指定的文件,默认为0,即不跳过包含的文件。vld.execute为0时有效;
5)vld.skip_append:是否跳过php.ini配置文件中auto_append_file指定的文件,默认为0,即不跳过包含的文件。vld.execute为0时有效;
6)vld.format:是否启用自定义输出格式——1启用,0不启用(默认不启用);
7)vld.col_sep:自定义输出格式间隔符,vld.format为1时有效;
8)vld.save_dir:指定文件输出的路径,默认路径为/tmp;
9)vld.save_paths:控制是否输出dot语言文件,默认为0,表示不输出;
10)vld.dump_paths:控制是否输出分支及路径信息——1输出,0不输出(默认输出)。
二、小知识
dot是一种描述图形的语言,可以由Graphviz工具包来绘制dot描述的图形。vld扩展可以直接通过命令来生成dot脚本,现以下面的代码来演示一下:
$ yum install -y graphviz
$ php -dvld.active=1 -dvld.save_paths=1 test.php
$ ll /tmp
-rw-rw-r-- 1 vagrant vagrant 791 11月 30 02:41 paths.dot
$ dot -Tpng /tmp/paths.dot -o paths.png
VLD是PECL(PHP扩展和应用仓库)的一个PHP扩展,现在最新版本是0.16.0,它的功能是: 显示转储PHP脚本(opcode)的内部显示。简而言之,可以看到PHP程序的OPCODE。 对我们理解PHP内部的运行和优化代码有很大的帮助。 我做的工作就是在此基础上,可以让页面上也能直接看到OPCODE,方便观察,学习。
官方地址:http://pecl.php.net/package/vld
改造地址:https://github.com/midoks/vld
一、安装vld扩展
git clone https://github.com/derickr/vld.git
cd vld
phpize
./configure --with-php-config=/usr/local/php71/bin/php-config --enable-vld
make && make install
echo 'extension=vld.so'>> /usr/local/php71/lib/php.ini
php -m | grep vld
php -d vld.active=1 test.php
从上边的输出可以看到这段代码一共有5个opcode[1]。
vld扩展有下边几个参数。
1)vld.active:是否在执行PHP的同时激活vld——1激活,0不激活(默认不激活)。
2)vld.execute:是否输出程序的执行结果——1输出,0不输出(默认输出)。
3)vld.verbosity:显示更详细的opcode信息,开启后可以显示每个opcode的操作数的类型等信息。
4)vld.skip_prepend:是否跳过php.ini配置文件中auto_prepend_file配置项指定的文件,默认为0,即不跳过包含的文件。vld.execute为0时有效;
5)vld.skip_append:是否跳过php.ini配置文件中auto_append_file指定的文件,默认为0,即不跳过包含的文件。vld.execute为0时有效;
6)vld.format:是否启用自定义输出格式——1启用,0不启用(默认不启用);
7)vld.col_sep:自定义输出格式间隔符,vld.format为1时有效;
8)vld.save_dir:指定文件输出的路径,默认路径为/tmp;
9)vld.save_paths:控制是否输出dot语言文件,默认为0,表示不输出;
10)vld.dump_paths:控制是否输出分支及路径信息——1输出,0不输出(默认输出)。
二、小知识
dot是一种描述图形的语言,可以由Graphviz工具包来绘制dot描述的图形。vld扩展可以直接通过命令来生成dot脚本,现以下面的代码来演示一下:
$ yum install -y graphviz
$ php -dvld.active=1 -dvld.save_paths=1 test.php
$ ll /tmp
-rw-rw-r-- 1 vagrant vagrant 791 11月 30 02:41 paths.dot
$ dot -Tpng /tmp/paths.dot -o paths.png
新闻资讯 更多
- 【建站知识】查询nginx日志状态码大于400的请求并打印整行04-03
- 【建站知识】Python中的logger和handler到底是个什么?04-03
- 【建站知识】python3拉勾网爬虫之(您操作太频繁,请稍后访问)04-03
- 【建站知识】xpath 获取meta里的keywords及description的方法04-03
- 【建站知识】python向上取整以50为界04-03
- 【建站知识】scrapy xpath遇见乱码解决04-03
- 【建站知识】scrapy爬取后中文乱码,解决word转为html 时cp1252编码问题04-03
- 【建站知识】scrapy采集—爬取中文乱码,gb2312转为utf-804-03