PHP7如何开启Opcode打造强悍性能详解
1.什么是Opcode
Opcode是指操作码,也就是计算机指令集中的一种操作码。在PHP中,Opcode是指PHP代码中的每个指令的二进制代码表示。PHP脚本的解释器将脚本中的PHP代码解析为Opcode,然后执行Opcode来完成PHP代码实现的功能。
2.PHP7的Opcode Cache
PHP7的执行效率得到很大提升,部分原因源于基于Zend Engine的Opcode Cache在PHP7中加入了更多的内存存储,这意味着PHP执行器不再将脚本直接转换为中间代码,并马上执行编译出的Opcode。相反,PHP执行器会将编译生成的Opcode缓存到内存中,并建立一个指向这个缓存区域的指针供下次使用。这样PHP脚本就不必每次执行时都重新编译一遍。
3.如何开启Opcode Cache
在PHP7中,开启Opcode Cache不再需要装扩展,而是在php.ini文件中进行设置。常见的设置方式有两种:
方式一:
```
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
```
上述代码中,opcache.enable=1表示开启Opcode Cache,opcache.memory_consumption=128表示为Opcode Cache分配的内存大小为128M,opcache.max_accelerated_files=4000表示允许缓存的最大文件数为4000个,opcache.revalidate_freq=60表示60秒后清空缓存。
方式二:
另一种设置方式是利用调用phpinfo函数来查看现在PHP的版本。用这种方式,您可以直接在phpinfo中进行Opcode Cache设置。在phpinfo函数的结果中,找到“Zend OPcache”这个部分,您将看到包括Opcode Cache在内的一些PHP设置。向下滚动到详情页和设置部分,可以找到可配置的选项。
4.性能优化
除了基本的设置外,您还可以通过以下方式对性能进行调优:
(1)调整内存大小:尽可能最大化Opcode Cache的内存分配可以保持更多的Opcodes和解析后的指令,在提取、编译和效率方面可以带来显著的性能优势。
(2)调整max_accelerated_files:当达到最大值时,内存中存储的Opcode Cache被清空。因此,您应该确保底层操作系统的文件打开句柄限制不会比此值小,这是因为Opcode Cache将打开并查看每个PHP脚本文件,就像一个PHP代码的“Fopen”操作一样。如果找不到相应的文件句柄,Opcode Cache可能无法正常工作。
(3)重新验证频率:如果您的应用程序的开发人员频繁地修改源文件,您可以设置Opcode Cache重新验证它们的频率。例如,如果一段时间内没有更改源代码,就可以使用前面提到的opcache.revalidate_freq指令来清空itre符合时,在重新请求来获得性能提升。默认值为2。
5.总结
在PHP7中,Opcode Cache的使用成为了性能提升的重要手段。通过合理设置opcache的参数,您可以有效地提升PHP执行的效率和速度。