gpt4 book ai didi

PHP中opcode缓存简单用法分析

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章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/xdebugxdebug.profiler_output_name = cachegrind.out.%p

xdebug的函数跟踪:

xdebug.trace_output_dir = /tmp/xdebugxdebug.trace_output_name = trace.%c

window下可以用wincachegrind查看xdebug的报告文件.

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

最后此篇关于PHP中opcode缓存简单用法分析的文章就讲到这里了,如果你想了解更多关于PHP中opcode缓存简单用法分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com