日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

PHP安装parsekit扩展查看opcode

發(fā)布時(shí)間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP安装parsekit扩展查看opcode 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

也可以通過(guò)VLD查看,具體請(qǐng)看本人寫的http://blog.csdn.net/21aspnet/article/details/7002644

?

安裝parsekit擴(kuò)展

http://pecl.php.net/package/parsekit

下載最新的

#wget http://pecl.php.net/get/parsekit-1.3.0.tgz

安裝過(guò)程省略

可以參考? 本人寫的http://blog.csdn.net/21aspnet/article/details/7035392? 安裝apc擴(kuò)展是一樣的原理

還是自動(dòng)安裝很方便

安裝:

# /usr/local/php/bin/pecl install parsekit?????

配置:

php.ini加extension=parsekit.so????

重啟:

# /usr/local/apache2/bin/apachectl restart??

測(cè)試:

# /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)}}
}
總結(jié):兩種方法 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.如果要查看網(wǎng)站下某個(gè)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.如果要查看某個(gè)函數(shù)的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'));
?>

?

總結(jié)

以上是生活随笔為你收集整理的PHP安装parsekit扩展查看opcode的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。