利用PHP扩展vld查看PHP opcode操作步骤


Posted in PHP onMarch 04, 2013

首先下载最新版vld扩展:

~/public_html/php-5.3.13/ext> wget http://pecl.php.net/get/vld-0.11.2.tgz 
~/public_html/php-5.3.13/ext> tar zxvf vld-0.11.2.tgz 
~/public_html/php-5.3.13/ext> cd vld-0.11.2/

接下来编译安装vld扩展:
~/public_html/php-5.3.13/ext/vld-0.11.2> phpize 
~/public_html/php-5.3.13/ext/vld-0.11.2> ./configure --with-php-config=/usr/local/services/php/bin/php-config --enable-vld 
~/public_html/php-5.3.13/ext/vld-0.11.2> make 
~/public_html/php-5.3.13/ext/vld-0.11.2> sudo make install 
Installing shared extensions: /usr/local/services/php/lib/php/extensions/no-debug-non-zts-20090626/

最后将生成的vld.so复制到extension_dir目录下:
~/public_html/php-5.3.13/ext/vld-0.11.2> cd /usr/local/services/php/lib/php/extensions/no-debug-non-zts-20090626/ 
/usr/local/services/php/lib/php/extensions/no-debug-non-zts-20090626> sudo cp vld.so /usr/local/services/php/extensions/

然后修改php.ini文件,添加如下配置:
extension=vld.so

接下来创建test.php文件:
<?php 
$a = "hello world"; 
echo $a . PHP_EOL;

使用cli来执行,查看生成的opcode:
~/public_html> php -dvld.active=1 test.php 
Finding entry points 
Branch analysis from position: 0 
Return found 
filename: /home/zhanhailiang/public_html/test.php 
function name: (null) 
number of ops: 4 
compiled vars: !0 = $a 
line # * op fetch ext return operands 
--------------------------------------------------------------------------------- 
3 0 > ASSIGN !0, 'hello+world' 
5 1 CONCAT ~1 !0, '%0A' 
2 ECHO ~1 
6 3 > RETURN 1 
branch: # 0; line: 3- 6; sop: 0; eop: 3 
path #1: 0, 
hello world
PHP 相关文章推荐
多文件上载系统完整版
Oct 09 PHP
php文件上传表单摘自drupal的代码
Feb 15 PHP
初品cakephp 入门基础
Feb 16 PHP
php截取后台登陆密码的代码
May 05 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
Apr 28 PHP
PHP5常用函数列表(分享)
Jun 07 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
php技术实现加载字体并保存成图片
Jul 27 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
Mar 21 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
分析php://output和php://stdout的区别
May 06 PHP
Laravel如何同时连接多个数据库详解
Aug 13 PHP
PHP对MongoDB[NoSQL]数据库的操作
Mar 01 #PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 #PHP
Apache中php.ini的设置方法
Feb 28 #PHP
PHP中如何定义和使用常量
Feb 28 #PHP
使用php判断浏览器的类型和语言的函数代码
Feb 28 #PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 #PHP
PHP删除非空目录的函数代码小结
Feb 28 #PHP
You might like
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
2006/06/26 Javascript
extJs 下拉框联动实现代码
2010/04/09 Javascript
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
详解jQuery中基本的动画方法
2016/12/14 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
vuex管理状态仓库使用详解
2020/07/29 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
three.js如何实现3D动态文字效果
2021/03/03 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
python进阶教程之动态类型详解
2014/08/30 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
python学习入门细节知识点
2018/03/29 Python
Python多线程多进程实例对比解析
2020/03/12 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
python 实现两个线程交替执行
2020/05/02 Python
详解Python IO编程
2020/07/24 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
美味咖啡的顶级烘焙师:Cafe Britt
2018/03/15 全球购物
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
市场营销专业推荐信
2013/11/03 职场文书
总监职责范文
2013/11/09 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书
python开发制作好看的时钟效果
2022/05/02 Python