PHP安装parsekit扩展查看opcode
也可以通過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
<?php
function?foo($bar,?stdClass?$baz,?&$bomb,?$bling?=?false)?{
}
var_dump(parsekit_func_arginfo('foo'));
?>
?
總結
以上是生活随笔為你收集整理的PHP安装parsekit扩展查看opcode的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 非广告求勿删!!!你们有从国外寄过大型包
- 下一篇: Xcache安装与使用