您好,登錄后才能下訂單哦!
VLD是php的一個擴展,用于查看php的Opcode級的操作。
VLD包的下載網址:http://pecl.php.net/package/vld
用php的pecl安裝方法:pecl install channel://pecl.php.net/vld-0.10.1
使用方法如:
1、用于測試的文件為testvld.php,內容如下
<?php
function _count($num){
if($num==0){
return 0;
}else{
return $num + _count($num-1);
}
}
echo _count(10);
?>
2、根據各自的環境來用php命令加-dvld.active=1來執行文件,如本人環境中執行命令:/usr/local/php-5.6.4/bin/php -c /usr/local/php-5.6.4/php.ini -dvld.active=1 testvld.php
3、通過vld對testvld.php執行結果如下:
Finding entry points
Branch analysis from position: 0
Jump found. Position 1 = -2
filename: /home/file/testvld.php
function name: (null)
number of ops: 5
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
2 0 E > NOP
9 1 SEND_VAL 10
2 DO_FCALL 1 $0 '_count'
3 ECHO $0
11 4 > RETURN 1
branch: # 0; line: 2- 11; sop: 0; eop: 4; out1: -2
path #1: 0,
Function _count:
Finding entry points
Branch analysis from position: 0
Jump found. Position 1 = 3, Position 2 = 5
Branch analysis from position: 3
Jump found. Position 1 = -2
Branch analysis from position: 5
Jump found. Position 1 = -2
filename: /home/file/testvld.php
function name: _count
number of ops: 12
compiled vars: !0 = $num
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
2 0 E > RECV !0
3 1 IS_EQUAL ~0 !0, 0
2 > JMPZ ~0, ->5
4 3 > > RETURN 0
5 4* JMP ->11
6 5 > INIT_FCALL_BY_NAME '_count'
6 SUB ~1 !0, 1
7 SEND_VAL ~1
8 DO_FCALL_BY_NAME 1 $2
9 ADD ~3 !0, $2
10 > RETURN ~3
8 11* > RETURN null
branch: # 0; line: 2- 3; sop: 0; eop: 2; out1: 3; out2: 5
branch: # 3; line: 4- 4; sop: 3; eop: 3; out1: -2
branch: # 5; line: 6- 8; sop: 5; eop: 11
path #1: 0, 3,
path #2: 0, 5,
End of function _count
重點分析:
number of ops: Opcode級的操作總個數
列表中的op:具體的操作名
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。