php7 开启zend-opcahe提升性能及原理解析
Posted xs-yqz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php7 开启zend-opcahe提升性能及原理解析相关的知识,希望对你有一定的参考价值。
首先:我们来了解一下php的执行过程解释 和什么是编译?
PHP的执行流程(详细版):
-
1.Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)
-
2.Parsing, 将Tokens转换成简单而有意义的表达式(词法、语法、语义分析)
-
3.Compilation, 将表达式编译成Opocdes
-
4.Execution, 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能,和机器指令运行相似。
Opcache 的前生是 Optimizer+
,它是PHP的官方公司 Zend 开发的一款闭源但可以免费使用的 PHP 优化加速组件。 Optimizer+ 将PHP代码预编译生成的脚本文件 Opcode
缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。从而加速PHP的执行。
PHP的正常执行流程如下
对应的流程如下:request请求(nginx,apache,cli等)-->Zend引擎读取.php文件-->扫描其词典和表达式 -->解析文件-->创建要执行的计算机代码(称为Opcode)-->最后执行Opcode--> response 返回
每一次请求PHP脚本都会执行一遍以上步骤,如果PHP源代码没有变化,那么Opcode也不会变化,显然没有必要每次都重新生成Opcode,结合在Web中无所不在的缓存机制,我们可以把Opcode缓存下来,以后直接访问缓存的Opcode岂不是更快,启用Opcode缓存之后的流程图如下所示:
Opcode cache 的目地是避免重复编译,减少 CPU 和内存开销,使其加载PHP文件更快。
PHP的执行的核心是翻译出来的一条一条指令,也即opcode。
Opcode是PHP程序执行的最基本单位。一个opcode由两个参数(op1,op2)、返回值和处理函数组成。PHP程序最终被翻译为一组opcode处理函数的顺序执行。
参考资料:Opcode是啥以及如何使用好Opcache https://www.zybuluo.com/phper/note/1016714
以上是关于php7 开启zend-opcahe提升性能及原理解析的主要内容,如果未能解决你的问题,请参考以下文章