OPcache是一个用于缓存PHP脚本的扩展模块,它可以模拟PHP脚本的解释执行过程,并将其编译成opcode(操作码),从而在以后的相同请求中直接使用缓存的opcode,避免了重复的解释和编译过程,从而提高了PHP脚本的执行效率。
具体来说,当一个PHP脚本第一次被执行时,OPcache将对该脚本进行解释和编译,并将编译后的opcode存储在内存中,以后在访问该脚本时,只需直接使用缓存的opcode即可,从而大大减少了计算和I/O操作,提高了运行效率。 OPcache缓存是PHP的一个内置缓存机制,在PHP 5.5及以上版本中已经默认开启。
什么是 zend opcache?Zend OPcache 通过 opcode 缓存和优化提供更快的 PHP 执行过程。它将预编译的脚本文件存储在共享内存中供以后使用,从而避免了从磁盘读取代码并进行编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。
当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache 的目地是避免重复编译,减少 CPU 和内存开销。如果动态内容的性能瓶颈不在于 CPU 和内存,而在于 I/O 操作,比如数据库查询带来的磁盘 I/O 开销,那么 opcode cache 的性能提升是非常有限的。但是既然 opcode cache 能带来 CPU 和内存开销的降低,这总归是好事!
现代操作码缓存器(Optimizer+,APC2.0+,其他)使用共享内存进行存储,并且可以直接从中执行文件,而不用在执行前“反序列化”代码。这将带来显着的性能加速,通常降低了整体服务器的内存消耗,而且很少有缺点。