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

首先下载最新版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

(0)

相关推荐

  • 如何使用PHP Embed SAPI实现Opcodes查看器

    PHP提供了一个Embed SAPI,也就是说,PHP容许你在C/C++语言中调用PHP/ZE提供的函数.本文就通过基于Embed SAPI实现一个PHP的opcodes查看器. 首先,下载PHP源码以供编译, 我现在使用的是PHP5.3 alpha2 进入源码目录: ./configure --enable-embed --with-config-file-scan-dir=/etc/php.d --with-mysql  --with-config-file-path=/etc/  ./ma

  • 深入理解PHP之OpCode原理详解

    本文实例讲述了PHP中OpCode的原理.分享给大家供大家参考,具体如下: OpCode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL. 此文主要基于< Understanding OPcode>和 网络,根据个人的理解和修改,特记录下来 : PHP代码: <?php echo "Hello World"; $a = 1 + 1; echo $a; ?> PHP执行这段代码会经过如下4个步骤: 1. Scanning (L

  • PHP OPCode缓存 APC详细介绍

    APC的介绍 The Alternative PHP Cache (APC) is a free and open opcode cache for PHP. Its goal is to provide a free, open, and robust framework for caching and optimizing PHP intermediate code. APC官方网站:http://www.php.net/manual/en/book.apc.php WIN下最新版本的下载地

  • PHP内核学习教程之php opcode内核实现

    opcode是计算机指令中的一部分,用于指定要执行的操作, 指令的格式和规范由处理器的指令规范指定. 除了指令本身以外通常还有指令所需要的操作数,可能有的指令不需要显式的操作数. 这些操作数可能是寄存器中的值,堆栈中的值,某块内存的值或者IO端口中的值等等. 通常opcode还有另一种称谓:字节码(byte codes). 例如Java虚拟机(JVM),.NET的通用中间语言(CIL: Common Intermeditate Language)等等. 1. Opcode简介 opcode是计算

  • 为PHP5.4开启Zend OPCode缓存

    编译步骤: 复制代码 代码如下: git clone git://github.com/zend-dev/ZendOptimizerPlus.git cd ZendOptimizerPlus $PHP_DIR/bin/phpize ./configure \ --with-php-config=$PHP_DIR/bin/php-config make && make install 配置步骤:在 php.ini 内增加zend_extension=/...full path.../opca

  • 理解php原理的opcodes(操作码)

    Opcondes是一种php脚本编译后的中间语言,就像Java的Byte Code,或者.NET 的MSL .(都没了解过~) 举个文中的例子 复制代码 代码如下: <?php echo "Hello World"; $a = 1 + 1; echo $a; ?> PHP执行这段代码会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend) 复制代码 代码如下: 1.Scanning(Lexing) (扫描),将PHP代码转换为语言片段(Tokens) 2.Parsi

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

    首先下载最新版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.1

  • PHP使用PDO、mysqli扩展实现与数据库交互操作详解

    本文实例讲述了PHP使用PDO.mysqli扩展实现与数据库交互操作.分享给大家供大家参考,具体如下: 数据库 在我们开发php时,可能有人已经学习了php数据库的连接交互,也可能正准备学习.如今,按照php的发展趋势,mysql扩展已经停止开发,在以后的发展中可能被淘汰,如mysql->query(),mysql->connect()等以后可能就无法使用.所以我们要尽量使用PDO和mysqli扩展. PDO 基本操作如下: <?php // PDO + MySQL $servernam

  • 使用DataGrid中扩展ItemRenderer和HeaderRenderer进行操作

    如果仅仅只是简单的显示数据,或者对显示数据做一些格式化操作,基本的DataGrid,加labelFunction支持就可以满足了,但大多我们需要针对不同的数据和对象,进行不同的渲染,比如checkbox啦,下拉选择框,日期等等,再比如自己控制显示复杂视图,比如Gantt图之类.这就必须扩展ItemRenderer和HeaderRenderer. (1)有关ItemRenderer的类实现IDataRenderer和IDropInListItemRenderer接口. 很多flex control

  • PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法

    本文实例讲述了PHP基于迭代实现文件夹复制.删除.查看大小等操作的方法.分享给大家供大家参考,具体如下: 前面一篇 PHP递归实现文件夹的复制.删除.查看大小操作 分析了递归操作使用技巧,这里再来分析一下迭代的操作技巧. "既然递归能很好的解决,为什么还要用迭代呢"?主要的原因还是效率问题-- 递归的概念是函数调用自身,把一个复杂的问题分解成与其相似的多个子问题来解决,可以极大的减少代码量,使得程序看起来非常优雅. 由于系统要为每次函数调用分配运行空间,并使用压栈予以记录.在函数调用结

  • 利用PHP扩展Xhprof分析项目性能实践教程

    一.背景 项目即将上线,想通过一些工具来分析代码的稳定性和效率,想起在上个团队时使用过的xhprof扩展:因为换了新电脑,所以需要重新编译此扩展,现将安装与实际排查过程完整记录下来,方便自己回顾和帮助更多的读者. XHProf 是 FaceBook 开发的一个函数级别的 PHP 分层分析器. 数据收集部分是一个基于 C 的 PHP 扩展,分析报告是一系列基于 PHP 的 HTML 导航页面. XHProf 能统计每个函数的调用次数.内存使用.CPU占用等多项重要的数据. 并且 XHProf 还能

  • Android利用Document实现xml读取和写入操作

    本文实例为大家分享了利用Document实现xml读取和写入操作,供大家参考,具体内容如下 首先先来介绍一下什么xml?xml是可扩展标记语言,他可以用来标记数据,定义数据类型.是一种允许用户对自己标记语言进行定义的源语言.解析XML文件的方法有很多方法:dom解析,就是document以及PULL和SAX方法.今天给大家分享一下如何用Document来操作XML. 效果图: 首先先对布局文件进行操作:activity_main.xml: <?xml version="1.0"

  • vue-cli或vue项目利用HBuilder打包成移动端app操作

    一.测试项目是否可以正确运行 指令:npm run dev 1.首先我们先建立一个vue的项目,本人用的是vue-cli随便建立的,然后运行项目 二.修改路径 (assetsPublicPath: './') 1. 打开我们config中的js文件,修改assetsPublicPath的路径为"./"(下图的右下角位置) 2. 检查下assetsRoot: path.resolve(__dirname, '-/dist'), assetsSubDirectory: 'static',

  • 群晖NAS利用Docker容器搭建KMS激活服务器实现激活windows系统和office(操作步骤)

    前言 Windows系统中能够通过KMS进行激活的一般称为VL版,即VOLUME授权版.我们可以自行搭建KMS激活服务器,实现每180天一次的自动激活,使得系统一直保持激活状态.这次就跟大家分享一下如何利用群晖NAS的Docker容器套件搭建KMS服务器,并演示如何利用我们自己的KMS服务器激活Windows操作系统与Microsoft Office. 操作步骤 先到套件中心安装Docker套件 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZCVBfkb9-15

  • PHP利用Cookie设置用户30分钟未操作自动退出功能

    登陆控制器需要做的登陆成功把用户ID等信息存入cookie: $this->systemSetKey(array('name'=>$admin_info['admin_name'], 'id'=>$admin_info['admin_id'],'gid'=>$admin_info['admin_gid'],'sp'=>$admin_info['admin_is_super']));//登陆成功之后做得事情 父类中的 systemSetKey 方法: /** * 系统后台 会员

  • 利用tcpdump对mysql进行抓包操作技巧

    利用tcpdump对mysql进行抓包操作如下所示: 命令如下: 复制代码 代码如下: tcpdump -s 0 -l -w - dst 192.168.244.10 and port 3306 -i eno16777736 |strings 其中-i指定监听的网络接口,在RHEL 7下,网络接口名不再是之前的eth0,而是 eno16777736. 在RHEL 5&6下,可直接不带-i参数,因为它默认是eth0.在RHEL 7下,如果不用-i参数指定网络接口,则会报如下错误: 复制代码 代码如

随机推荐