本文实例讲述了PHP中opcode缓存简单用法。分享给大家供大家参考,具体如下:
1.什么是opcode
解释器分析代码之后,生成可以直接运行的中间代码,就称做操作码,opcode
2.解释器与编译器的区别
解释器是生成了中间代码后直接运行中间代码,运行时的控制权还是在解释器手里。
编译器则是生成了中间代码之后还进一步优化代码,生成可以直接运行的目标程序 ,但不执行,等待用户触发执行,他的控制权在目标程序,和编译器无关。
3.PHP是解释型语言,他的原理与编译有点相似,包括词法分析,语法分析,语义分析.....,PHP解释器的核心引擎就是
安装PHP的parsekit扩展,通过扩展的api就可以查看PHP的opcode,如 5.opcode有生成 首先要经过词法分析,脚本代码可以看做是一系列单词组合,解释器要对这些单词进行分类,并打上记号 比如print,我们查看PHP源码包中的文件中我们就可以查找到pirnt对应的标记。T_PRINT 找到标记之后接下来就是语法分析,在函数 接着在zend/zend_compile.c中找到这个函数实现代码,这个函数就是实现 了opcode的转换。所有的opcode都是用户整数来表示 的。 6、 开启opcode缓存 生成opcode是需要系统开销的,每一次执行都要生成一次opcode,这样的开销还是可观的,所以PHP的优化必须开启opcode的缓存,来避免重复的编译。 PHP的opcode缓存有APC,eAccelerator,XCache,这些都是把opcode放在共享内存中。 以APC为例:在PHP.ini中设置 通过 可以查看缓存的情况, 7.opcode缓存过期 opcode缓存是会过期的,如果过期就要得新生成一次,当然也可以跳过过期检查的机制,在PHP.ini中设置 8.脚本的跟踪与分析,可以使用xdebug来跟踪,用xdebug可以实现性能跟踪器,找到程序的执行瓶颈,从而优化程序。 xdebug的函数跟踪: window下可以用wincachegrind查看xdebug的报告文件。 更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《PHP常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助。parsekit_compile_string()