PHP代码执行流程
<ul>
<li><a href="https://www.cnblogs.com/yangjinqiang/p/10951606.html">https://www.cnblogs.com/yangjinqiang/p/10951606.html</a></li>
<li><a href="https://blog.csdn.net/why444216978/article/details/84136573">https://blog.csdn.net/why444216978/article/details/84136573</a></li>
</ul>
<h2>PHP代码执行顺序</h2>
<ol>
<li>词法分析(扫描)
<ul>
<li>将PHP代码转换为语言片段(Tokens)</li>
</ul></li>
<li>语法分析(解析)
<ul>
<li>将Tokens转换成简单而有意义的表达式</li>
</ul></li>
<li>转化为opcode(编译)
<ul>
<li>将表达式编译成Opcodes</li>
</ul></li>
<li>顺序执行opcode(执行)</li>
</ol>
<h2>opcode</h2>
<ul>
<li>称为操作码(Operate Code),当解释器完成对脚本代码的分析后,生成可以直接运行的中间代码。</li>
</ul>
<h2>Opcode cache</h2>
<ul>
<li>目地是避免重复编译,减少CPU和内存开销</li>
<li>opcode cache能带来CPU和内存开销的降低
<ul>
<li>如果动态内容的性能瓶颈不在于CPU和内存,而在于I/O操作。</li>
</ul></li>
</ul>
<h2>为什么要使用Opcode cache</h2>
<ul>
<li>请求PHP脚本时经过五步,Zend引擎必须从文件系统读取文件、扫描其词典和表达式、解析文件、创建要执行的计算机代码(称为Opcode),最后执行Opcode。</li>
<li>每一次请求PHP脚本都会执行一遍以上步骤,如果PHP源代码没有变化,Opcode也不会变化,没有必要每次都重行生成Opcode,结合在Web中无所不在的缓存机制,可以把Opcode缓存下来,以后直接访问缓存的Opcode更快</li>
</ul>