PHP性能优化工具--vld

2016-12-25 杜世伟 Php

PHP性能优化工具--vld

vld介绍

  1. vld是一个在Zend引擎中,以挂钩的方式实现的用于输出PHP脚本生成的中间代码(执行单元)的扩展。 它可以在一定程序上查看Zend引擎内部的一些实现原理,是我们学习PHP源码的必备良器。
  2. 现在最新版本是 0.14.0(2016-12-18),它的作用是:显示转储PHP脚本(opcode)的内部表示(来自PECL的vld简介)。简单来说,可以查看PHP程序的opcode。
  3. pagelist:http://pecl.php.net/package/vld
vld扩展安装:

wget http://pecl.php.net/get/vld-0.14.0.tgz #download vld
tar zxvf vld-0.14.0.tgz #Decompression package
cd vld-0.14.0 #change dir
phpize #Expanded php extension module
locate php-config #use locate find php-config path
如果提示not found locate command,使用以下命令安装:
yum -y install mlocate 
安装完毕后使用updatedb命令更新数据后可以直接使用

通过以下命令进行编译安装:
./configure --with-php-config=/usr/bin/php-config --enable-vld
make && make install

如果在安装过程中出现以下错误:
configure: error: no acceptable C compil

configure: error: no acceptable C compiler found in $PATH

./configure --with-php-config=/usr/bin/php-config --enable-vld
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /usr/bin/sed
checking for cc... no
checking for gcc... no
configure: error: in `/data/vld-0.14.0':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
请使用yum -y install gcc进行gcc安装,然后重新编译

安装完毕后,在php.ini中添加对应的vld.so扩展,然后重新启动php-fpm,nginx
如果查看扩展是否安装成功,可以通过以下两个方法查看:
1)命令行 #php -m | grep vld 查看
2)phpinfo

vld扩展使用方式:

vld不能单独使用,它需要和PHP命令一起。它主要有两个参数分别是 -dvld.active (等于1证明是使用vld扩展)和 -dvld.execute (等于1证明是需要执该PHP文件,默认是1)。

测试命令:# php -dvld.active=1 -dvld.execute=0 test.php 
(就是指运行test.php的时候,使用vld插件,不执行,只显示opcode)

总结一下,VLD扩展的参数列表:
-dvld.active 是否在执行PHP时激活VLD挂钩,默认为0,表示禁用。可以使用-dvld.active=1启用。
-dvld.skip_prepend 是否跳过php.ini配置文件中auto_prepend_file指定的文件, 默认为0,即不跳过包含的文件,显示这些包含的文件中的代码所生成的中间代码。此参数生效有一个前提条件:-dvld.execute=0
-dvld.skip_append 是否跳过php.ini配置文件中auto_append_file指定的文件, 默认为0,即不跳过包含的文件,显示这些包含的文件中的代码所生成的中间代码。此参数生效有一个前提条件:-dvld.execute=0
-dvld.execute 是否执行这段PHP脚本,默认值为1,表示执行。可以使用-dvld.execute=0,表示只显示中间代码,不执行生成的中间代码。
-dvld.format 是否以自定义的格式显示,默认为0,表示否。可以使用-dvld.format=1,表示以自己定义的格式显示。这里自定义的格式输出是以-dvld.col_sep指定的参数间隔
-dvld.col_sep 在-dvld.format参数启用时此函数才会有效,默认为 “\t”。
-dvld.verbosity 是否显示更详细的信息,默认为1,其值可以为0,1,2,3 其实比0小的也可以,只是效果和0一样,比如0.1之类,但是负数除外,负数和效果和3的效果一样 比3大的值也是可以的,只是效果和3一样。
-dvld.save_dir 指定文件输出的路径,默认路径为/tmp。
-dvld.save_paths 控制是否输出文件,默认为0,表示不输出文件
-dvld.dump_paths 控制输出的内容,现在只有0和1两种情况,默认为1,输出内容


标签: PHP configure yum vld locate phpize

Powered by emlog 沪ICP备2023034538号-1