zoukankan      html  css  js  c++  java
  • vld扩展

    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

    
    
  • 相关阅读:
    [读书笔记]捉虫日记
    花生壳建站全过程
    (step4.3.9)hdu 1584(蜘蛛牌——DFS)
    鼠标移到导航上面 当前的LI变色 处于当前的位置
    JavaScript学习笔记
    由Maximum Gap,对话桶排序,基数排序和统计排序
    安德鲁斯Launcher得到的装在手机的应用程序列表
    broadAnywhere:Broadcast组件权限绕过漏洞(Bug: 17356824)
    Ubuntu logomaker sh: 1: pngtopnm: not found 解决方案
    HDU 1598 find the most comfortable road (罗列+Kruskal) 并检查集合
  • 原文地址:https://www.cnblogs.com/cshaptx4869/p/10824536.html
Copyright © 2011-2022 走看看