VLD(Vulcan Logic Dumper)是一個掛鉤在Zend引擎下, 並且輸出PHP腳本生成的中間代碼(OPCode)的擴展。 它可以在一定程序上查看Zend引擎內部的一些實現原理。
VLD擴展是一個開源的項目下載地址
<?php
$start = new DateTime();
echo $start->format("Y-m-d H:i:s");
使用VLD查看OPCode信息
php -dvld.active=1 vld.php
-dvld.active=1 使用vld擴展
-dvld.execute=1 顯示值1,是否執行php文件
-dvld.verbosity=3 顯示詳細信息
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /var/www/html/vld.php
function name: (null)
number of ops: 14
compiled vars: !0 = $start
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
2 0 E > EXT_STMT
1 NEW $1 :-5
2 EXT_FCALL_BEGIN
3 DO_FCALL 0
4 EXT_FCALL_END
5 ASSIGN !0, $1
4 6 EXT_STMT
7 INIT_METHOD_CALL !0, 'format'
8 EXT_FCALL_BEGIN
9 SEND_VAL_EX 'Y-m-d+H%3Ai%3As'
10 DO_FCALL 0 $4
11 EXT_FCALL_END
12 ECHO $4
5 13 > RETURN 1
branch: # 0; line: 2- 5; sop: 0; eop: 13; out0: -2
path #1: 0,
上面是生產的opcode碼。