• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP中opcode缓存简单用法分析

    本文实例讲述了PHP中opcode缓存简单用法。分享给大家供大家参考,具体如下:

    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相关内容感兴趣的读者可查看本站专题:《php缓存技术总结》、《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • 为PHP5.4开启Zend OPCode缓存
    • PHP OPCode缓存 APC详细介绍
    • 利用PHP扩展vld查看PHP opcode操作步骤
    • 深入理解PHP之OpCode原理详解
    • 理解php原理的opcodes(操作码)
    • PHP内核学习教程之php opcode内核实现
    • 如何使用PHP Embed SAPI实现Opcodes查看器
    • PHP7如何开启Opcode打造强悍性能详解
    上一篇:PHP计算个人所得税示例【不使用速算扣除数】
    下一篇:dirname(__FILE__)的含义和应用说明
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    PHP中opcode缓存简单用法分析 PHP,中,opcode,缓存,简单,用法,