PHP作为一种解说型言语,不同于编译型言语编译成果即为当前CPU体系的指令,PHP源代码只有编译成opcode才能够被zend虚拟机直接履行。
  下面就简略描绘PHP7言语履行原理:
  源代码首先利用Re2c完成的词法分析器进行词法分析,将源代码切割为多个字符串单元,切割后的字符串称为Token;
  根据Bison完成的语法分析器将Token和契合BNF文法规则的代码生成抽象语法树;
  抽象语法树(AST)编译生成opcode;
  [网站](https://zzzjtd.com/)
  我们常常讨论的解说型言语履行效率较低,原因在于PHP履行进程中要多了翻译为opcode的进程。不仅如此,与常驻内存的Java等言语不同,PHP代码在履行往后,内存会立刻开释,基本上所有数据都会在此时毁掉(仅有极少数数据会缓存)。这种履行机制的优点在于有效防止内存走漏,内存回收机制更简略,缺陷便是每个PHP恳求都得重复履行恳求-翻译-履行的进程。为了弥补不是常驻内存的缺憾,引进opcode缓存,zend虚拟机会将第一次履行的PHP代码编译成果缓存到内存或许硬盘中,当下次履行该部分代码时直接读取缓存,必定程度上能够提高PHP运行速度。
  内存走漏(MemoryLeak)是指程序中己动态分配的堆内存由于某种原因程序未开释或无法开释,形成体系内存的糟蹋,导致程序运行速度减慢乃至体系溃散等严重后果。


阿猿啊
31 声望0 粉丝