PHP安装parsekit扩展查看opcode
2011-12-02 16:44
615 查看
也可以通过VLD查看,具体请看本人写的/article/2648082.html
安装parsekit扩展
http://pecl.php.net/package/parsekit
下载最新的
#wget http://pecl.php.net/get/parsekit-1.3.0.tgz
安装过程省略
可以参考 本人写的/article/2647861.html 安装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;'));"
输出:
再看输出hello word
# /usr/local/php/bin/php -r "var_dump(parsekit_compile_string('print \"hello word\";'));"
输出:
参考 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
安装parsekit扩展
http://pecl.php.net/package/parsekit
下载最新的
#wget http://pecl.php.net/get/parsekit-1.3.0.tgz
安装过程省略
可以参考 本人写的/article/2647861.html 安装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
<?php function foo($bar, stdClass $baz, &$bomb, $bling = false) { } var_dump(parsekit_func_arginfo('foo')); ?>
相关文章推荐
- PHP安装parsekit扩展查看opcode
- PHP安装与使用VLD查看opcode代码【PHP安装第三方扩展的方法】
- PHP安装与使用VLD查看opcode代码【PHP安装第三方扩展的方法】
- PHP安装与使用VLD查看opcode代码【PHP安装第三方扩展的方法】
- PHP安装与使用VLD查看opcode代码【PHP安装第三方扩展的方法】
- 安装与使用vld查看php的opcode代码
- linux查看php安装了哪些扩展
- 发布一个查看PHP opcode的扩展模块及Web服务
- debian安装vld来查看Opcode,PHP调优。
- PHP VLD扩展查看opcode
- 查看php已安装扩展命令
- LINUX下PHP安装VLD扩展,利用opcode优化php代码
- php查看opcode编码的扩展 opdumper
- 利用PHP扩展vld查看PHP opcode操作步骤
- 查看php已安装扩展命令
- 查看PHP opcode扩展模块及Web服务
- PHP扩展--vld查看opcode代码
- PHP VLD扩展查看opcode
- 利用PHP扩展vld查看PHP opcode操作步骤
- liunx 查看php 安装的扩展