• 售前

  • 售后

热门帖子
入门百科

PHP中opcode缓存简单用法分析

[复制链接]
阳光469 显示全部楼层 发表于 2021-10-25 19:17:29 |阅读模式 打印 上一主题 下一主题
本文实例讲述了PHP中opcode缓存简单用法。分享给大家供大家参考,具体如下:
1.什么是opcode
表明器分析代码之后,生成可以直接运行的中间代码,就称做操作码,opcode
2.表明器与编译器的区别
表明器是生成了中间代码后直接运行中间代码,运行时的控制权还是在表明器手里。
编译器则是生成了中间代码之后还进一步优化代码,生成可以直接运行的目的步伐 ,但不实验,等候用户触发实验,他的控制权在目的步伐,和编译器无关。
3.php是表明型语言,他的原理与编译有点相似,包罗词法分析,语法分析,语义分析.....,php表明器的核心引擎就是zend engine
4.php如何检察一段代码的opcode
安装php的parsekit扩展,通过扩展的api就可以检察php的opcode,如
  1. parsekit_compile_string()
复制代码
  1. 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中设置
  1. apc.cache_by_default = on
复制代码
通过
  1. <?php print_r(apc_cache_info());?>
复制代码
可以检察缓存的情况,
7.opcode缓存过期
opcode缓存是会过期的,如果过期就要得新生成一次,当然也可以跳过过期查抄的机制,在php.ini中设置
  1. apc.stat=off
复制代码
这样步伐代码的修改得通过重启服务器来生效。
8.脚本的跟踪与分析,可以使用xdebug来跟踪,用xdebug可以实现性能跟踪器,找到步伐的实验瓶颈,从而优化步伐。
  1. xdebug.profiler_output_dir = /tmp/xdebug
  2. xdebug.profiler_output_name = cachegrind.out.%p
复制代码
xdebug的函数跟踪:
  1. xdebug.trace_output_dir = /tmp/xdebug
  2. xdebug.trace_output_name = trace.%c
复制代码
window下可以用wincachegrind检察xdebug的报告文件。
更多关于PHP相干内容感兴趣的读者可检察本站专题:《php缓存技能总结》、《php面向对象步伐筹划入门教程》、《PHP根本语法入门教程》、《PHP数组(Array)操作本领大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作本领汇总》
盼望本文所述对大家PHP步伐筹划有所资助。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作