您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP安装parsekit扩展查看opcode

2024/2/19 16:30:45发布30次查看
也可以通过vld查看,具体请看本人写的http://blog.csdn.net/21aspnet/article/details/7002644 安装parsekit扩展 http://pecl.php.net/package/parsekit 下载最新的 #wget http://pecl.php.net/get/parsekit-1.3.0.tgz 安装过程省略 可以参考 本人写的http:/
也可以通过vld查看,具体请看本人写的http://blog.csdn.net/21aspnet/article/details/7002644
安装parsekit扩展
http://pecl.php.net/package/parsekit
下载最新的
#wget http://pecl.php.net/get/parsekit-1.3.0.tgz
安装过程省略
可以参考  本人写的http://blog.csdn.net/21aspnet/article/details/7035392  安装apc扩展是一样的原理
还是自动安装很方便
安装:
# /usr/local/php/bin/pecl install parsekit     
配置:
php.ini加extension=parsekit.so    
重启:
# /usr/local/apache2/bin/apachectl restart  
测试:
# /usr/local/php/bin/php -r var_dump(parsekit_compile_string('print 1+1;'));
输出:
array(19) { [type]=> int(4) [type_name]=> string(14) zend_eval_code [fn_flags]=> int(0) [num_args]=> int(0) [required_num_args]=> int(0) [pass_rest_by_reference]=> bool(false) [line_start]=> int(0) [line_end]=> int(0) [return_reference]=> bool(false) [refcount]=> int(1) [last]=> int(4) [size]=> int(4) [t]=> int(2) [last_brk_cont]=> int(0) [current_brk_cont]=> int(-1) [backpatch_count]=> int(0) [done_pass_two]=> bool(true) [filename]=> string(17) parsekit compiler [opcodes]=> array(4) { [0]=> array(8) { [address]=> int(457076436) [opcode]=> int(1) [opcode_name]=> string(8) zend_add [flags]=> int(197378) [result]=> array(3) { [type]=> int(2) [type_name]=> string(10) is_tmp_var [var]=> int(0) } [op1]=> array(3) { [type]=> int(1) [type_name]=> string(8) is_const [constant]=> &int(1) } [op2]=> array(3) { [type]=> int(1) [type_name]=> string(8) is_const [constant]=> &int(1) } [lineno]=> int(1) } [1]=> array(7) { [address]=> int(457076556) [opcode]=> int(41) [opcode_name]=> string(10) zend_print [flags]=> int(770) [result]=> array(3) { [type]=> int(2) [type_name]=> string(10) is_tmp_var [var]=> int(1) } [op1]=> array(3) { [type]=> int(2) [type_name]=> string(10) is_tmp_var [var]=> int(0) } [lineno]=> int(1) } [2]=> array(7) { [address]=> int(457076676) [opcode]=> int(70) [opcode_name]=> string(9) zend_free [flags]=> int(271104) [op1]=> array(4) { [type]=> int(2) [type_name]=> string(10) is_tmp_var [var]=> int(1) [ea.type]=> int(0) } [op2]=> array(3) { [type]=> int(8) [type_name]=> string(9) is_unused [opline_num]=> string(1) 0 } [lineno]=> int(1) } [3]=> array(7) { [address]=> int(457076796) [opcode]=> int(62) [opcode_name]=> string(11) zend_return [flags]=> int(16777984) [op1]=> array(3) { [type]=> int(1) [type_name]=> string(8) is_const [constant]=> &null } [extended_value]=> int(0) [lineno]=> int(1) } }}
再看输出hello word
# /usr/local/php/bin/php -r var_dump(parsekit_compile_string('print \hello word\;'));
输出:
array(19) { [type]=> int(4) [type_name]=> string(14) zend_eval_code [fn_flags]=> int(0) [num_args]=> int(0) [required_num_args]=> int(0) [pass_rest_by_reference]=> bool(false) [line_start]=> int(0) [line_end]=> int(0) [return_reference]=> bool(false) [refcount]=> int(1) [last]=> int(3) [size]=> int(3) [t]=> int(1) [last_brk_cont]=> int(0) [current_brk_cont]=> int(-1) [backpatch_count]=> int(0) [done_pass_two]=> bool(true) [filename]=> string(17) parsekit compiler [opcodes]=> array(3) { [0]=> array(7) { [address]=> int(536780564) [opcode]=> int(41) [opcode_name]=> string(10) zend_print [flags]=> int(770) [result]=> array(3) { [type]=> int(2) [type_name]=> string(10) is_tmp_var [var]=> int(0) } [op1]=> array(3) { [type]=> int(1) [type_name]=> string(8) is_const [constant]=> &string(10) hello word } [lineno]=> int(1) } [1]=> array(7) { [address]=> int(536780684) [opcode]=> int(70) [opcode_name]=> string(9) zend_free [flags]=> int(271104) [op1]=> array(4) { [type]=> int(2) [type_name]=> string(10) is_tmp_var [var]=> int(0) [ea.type]=> int(0) } [op2]=> array(3) { [type]=> int(8) [type_name]=> string(9) is_unused [opline_num]=> string(1) 0 } [lineno]=> int(1) } [2]=> array(7) { [address]=> int(536780804) [opcode]=> int(62) [opcode_name]=> string(11) zend_return [flags]=> int(16777984) [op1]=> array(3) { [type]=> int(1) [type_name]=> string(8) is_const [constant]=> &null } [extended_value]=> int(0) [lineno]=> int(1) } }}
总结:两种方法1.如果要查看单句php的opcode# /usr/local/php/bin/php -r var_dump(parsekit_compile_string('print 1+1;'));
参考 http://www.php.net/manual/zh/function.parsekit-compile-string.php
2.如果要查看网站下某个php文件的opcode
参考  http://www.php.net/manual/zh/function.parsekit-compile-file.php
# /usr/local/php/bin/php -r var_dump(parsekit_compile_file('/var/www/tb.php'));
3.如果要查看某个函数的opcode
参考 http://www.php.net/manual/zh/function.parsekit-func-arginfo.php
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product