"); //-->
今天小编主要是想给大家分享一下PHP中opcode缓存简单用法,本篇文章扣丁学堂PHP在线学习小编结合实例形式分析opcode的概念、原理、简单开启与使用方法,对PHP开发感兴趣的小伙伴们可以了解一下。本文会列出代码,小伙伴可以好好阅读。

1、什么是opcode
解释器分析代码之后,生成可以直接运行的中间代码,就称做操作码,opcode
2、解释器与编译器的区别
解释器是生成了中间代码后直接运行中间代码,运行时的控制权还是在解释器手里。
编译器则是生成了中间代码之后还进一步优化代码,生成可以直接运行的目标程序 ,但不执行,等待用户触发执行,他的控制权在目标程序,和编译器无关。
3、php是解释型语言,他的原理与编译有点相似,包括词法分析,语法分析,语义分析.....,php解释器的核心引擎就是zend engine
4、php如何查看一段代码的opcode
安装php的parsekit扩展,通过扩展的api就可以查看php的opcode,如parsekit_compile_string()
php -r "var_dump(parsekit_compile_string('print 1+1;'));"5、opcode有生成
首先要经过词法分析,脚本代码可以看做是一系列单词组合,解释器要对这些单词进行分类,并打上记号
比如print,我们查看php源码包中的zend/zend_language_scanner.l在这个文件中我们就可以查找到pirnt对应的标记。T_PRINT
找到标记之后接下来就是语法分析,在zend/zend_language_parser.y中,我们可以找到T_PRINT对应的函数
接着在zend/zend_compile.c中找到这个函数实现代码,这个函数就是实现 了opcode的转换。所有的opcode都是用户整数来表示 的。
6、 开启opcode缓存
生成opcode是需要系统开销的,每一次执行都要生成一次opcode,这样的开销还是可观的,所以php的优化必须开启opcode的缓存,来避免重复的编译。
php的opcode缓存有APC,eAccelerator,XCache,这些都是把opcode放在共享内存中。
以APC为例:在php.ini中设置
apc.cache_by_default = on
通过
<?php print_r(apc_cache_info());?>
可以查看缓存的情况,
7、opcode缓存过期
opcode缓存是会过期的,如果过期就要得新生成一次,当然也可以跳过过期检查的机制,在php.ini中设置
apc.stat=off
这样程序代码的修改得通过重启服务器来生效。
8.脚本的跟踪与分析,可以使用xdebug来跟踪,用xdebug可以实现性能跟踪器,找到程序的执行瓶颈,从而优化程序。
xdebug.profiler_output_dir = /tmp/xdebug xdebug.profiler_output_name = cachegrind.out.%p
xdebug的函数跟踪:
xdebug.trace_output_dir = /tmp/xdebug xdebug.trace_output_name = trace.%c
window下可以用wincachegrind查看xdebug的报告文件。
以上就是小编给大家分享的PHP中opcode缓存简单用法,希望对小伙伴们有所帮助,想要了解更多内容的小伙伴可以登录扣丁学堂官网查看更多内容。扣丁学堂是专业的PHP培训机构,不仅有专业的老师和与时俱进的课程体系,还有大量的PHP在线视频供学员观看学习哦。扣丁学堂PHP技术交流群:374332265。微信号:codingbb
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
[求助][原创]请帮忙为flash芯片M58LW064C选一个控制芯片?
自制镍镉电池自动充电器电路
全球前十大晶圆代工厂4Q24营收排名:台积电稳居龙头 中芯国际跻身第三
传感器总结
支持EMBEST IDE 的ARM JATG 原理图.rar
新一代GPU性能怪兽!NVIDIA GB300本月登场:全面引入水冷
脉冲式自动充电器电路(3)
脉冲式自动充电器(1)
四路单节电池独立充电全自动充电器电路
全球前十大晶圆代工厂产值再创新高
三菱FX系列PLC教程 19 —— FX系列的取反指令(INV)
TORNADO.V2.2.FOR.Arm是只有这样几个文件吗?怎么用啊?
关于Tron
用单片机实现的音乐播放器图和程序070302.rar
请问一下,for arm 和for pentium的tornado是不是只有BSP不一样?
汽车CIS芯片,一「芯」难求
自制PIC实验板.rar
声音传感器
三菱FX系列PLC教程 20 —— FX系列的取脉冲指令(LDP、LDF、ANDP、ANDF、ORP、ORF)
三菱FX系列PLC教程 16 —— FX系列的串联电路块的并联连接指令(ORB)
三菱FX系列PLC教程 18 —— FX系列的接点并联指令(OR、ORI)
quartusII 7.2 sp1全整合licen se
Manus背后的基础大模型首次公布!基于美国Claude和阿里Qwen开发
三菱FX系列PLC教程 17 —— FX系列的多重输出指令(MPS、MRD、MPP)
自制AVRISP下载型烧录器.rar
投资者想要DeepSeek部分股份 梁文锋:现在不行
脉冲式自动充电器电路(2)
苹果地图为福特车主更新电动汽车路线规划,支持特斯拉超充站导航
高薪找人做一个锁相环,频率950-1450MHz,步进1MHz
苹果史上最大软件革新即将来袭:界面统一 visionOS 风格化