PHP代码的执行实际上是在执行代码解析后的各种opcode。通过vld扩展可以很方便地看到执行过程中的opcode。

一、安装vld扩展

git clone https://github.com/derickr/vld.git

cd vld

phpize

./configure --with-php-config=/usr/local/php71/bin/php-config --enable-vld

make && make install

echo 'extension=vld.so'>> /usr/local/php71/lib/php.ini

php -m | grep vld

php -d vld.active=1 test.php

从上边的输出可以看到这段代码一共有5个opcode[1]。

vld扩展有下边几个参数。

1)vld.active:是否在执行PHP的同时激活vld——1激活,0不激活(默认不激活)。

2)vld.execute:是否输出程序的执行结果——1输出,0不输出(默认输出)。

3)vld.verbosity:显示更详细的opcode信息,开启后可以显示每个opcode的操作数的类型等信息。

4)vld.skip_prepend:是否跳过php.ini配置文件中auto_prepend_file配置项指定的文件,默认为0,即不跳过包含的文件。vld.execute为0时有效;

5)vld.skip_append:是否跳过php.ini配置文件中auto_append_file指定的文件,默认为0,即不跳过包含的文件。vld.execute为0时有效;

6)vld.format:是否启用自定义输出格式——1启用,0不启用(默认不启用);

7)vld.col_sep:自定义输出格式间隔符,vld.format为1时有效;

8)vld.save_dir:指定文件输出的路径,默认路径为/tmp;

9)vld.save_paths:控制是否输出dot语言文件,默认为0,表示不输出;

10)vld.dump_paths:控制是否输出分支及路径信息——1输出,0不输出(默认输出)。

二、小知识

dot是一种描述图形的语言,可以由Graphviz工具包来绘制dot描述的图形。vld扩展可以直接通过命令来生成dot脚本,现以下面的代码来演示一下:

$ yum install -y graphviz
$ php -dvld.active=1 -dvld.save_paths=1 test.php
$ ll /tmp
-rw-rw-r-- 1 vagrant vagrant 791 11月 30 02:41 paths.dot
$ dot -Tpng /tmp/paths.dot -o paths.png

												

最新文章

  1. http
  2. C语言内存对齐详解(2)
  3. LeetCode Course Schedule II
  4. 论文笔记之:Spatially Supervised Recurrent Convolutional Neural Networks for Visual Object Tracking
  5. Learning WCF Chapter 3 Bindings One-Way and Duplex Communication
  6. js删除数组里的某个元素
  7. 一起学习android图片四舍五入图片集资源 (28)
  8. Mysql net start mysql启动,提示发生系统错误 5 拒绝访问,原因所在以及解决办法
  9. 使用guava变形数据结构
  10. 对LCS算法及其变种的初步研究
  11. Big Event in HDU HDU - 1171
  12. 机器学习笔记之三-yolov3+win7+vs2017+gpu+opencv编译
  13. 使用PHP实现手机端APP支付宝的支付功能
  14. postgreSQL数据库limit分页、排序
  15. Python读写docx文件
  16. Oracle_PL/SQL(10) 定时器job
  17. ubuntu下sqlite命令
  18. python中级---->pymongo存储json数据
  19. 中国Linux开源镜像站大全
  20. 二维码QR Code简介及其解码实现(zxing-cpp)

热门文章

  1. [ DLPytorch ] 文本分类&图像增强
  2. pandas help
  3. HTML、HTML5重难点
  4. CentOS7.3下载地址
  5. Navigating to current location ("/") is not allowed
  6. Tomcat认识
  7. java.lang.ClassCastException: android.app.Application cannot be cast to
  8. Mysql 锁定 读情况
  9. [zlib] CMake + VS2015 下编译zlib,及使用小例
  10. IDEA工具java开发之 高级功能分屏是可以多次使用的 日志连接及浏览器 本地修改历 多列操作 查看方法调用情况