跳转到内容

OPcache

本页使用了标题或全文手工转换
维基百科,自由的百科全书
OPcache
原作者The PHP Group
首次发布2008年,​17年前​(2008
编程语言C
类型PHP 扩展程序
许可协议PHP许可证3.01
网站OPcache手册主页

OPcache是一个PHP扩展程序,由PHP官方发布[1],其功能是缓存编译后的字节码以供后续使用[2],可提升程序的处理速度。[3][4][5]

历史

[编辑]

2008年,OPcache的前身,PHPNG的开发已经开始[6],到了2013年,PHP团队在新的5.5.0版本将OPcache合并进入PHP核心并被默认启用,这标志着OPcache成为官方且预装扩展[7][6],同时,OPcache在該版本也更新了持久化功能,现在其可将字节码存入文件系统[6],而到了PHP 7.4.0,OPcache则更新了预加载功能,该功能可以预先加载尚未运行的代码以提升性能[8][6]。到了PHP 8.0.0 时,OPcache添加了一个内建的即时编译器,原本缓存的操作码本来需要被解释器实时转译为机器码再执行,这次更新使得机器码也可以被缓存,省去了解释的步骤,进一步提升性能[9],而在最新的PHP 8.4.0中,OPcache的JIT默认获得了64MB的缓冲区空间,但需手工启用[10]

原理

[编辑]

OPcache在访问新代码片段时,會检查其是否存在於缓存。若答案為否,則會编译該段代码,并将编译后生成的字节码在内存中进行缓存[2][7][3],下一次执行同一段代码时,便无需运行词法分析等编译过程,将直接从内存中提取字节码进行执行而不是再次编译[5][11][12]或实时编译所有代码[3]。同时,OPcache还会在代码变动时自动更新缓存的字节码[13]。另外,OPcache同样缓存了一些常量及文件中的符号表[14]

实际性能提升

[编辑]

在PHP 5.5时,OPcache之性能提升约50%,同时降低了磁盘CPU的占用率(因为编译过程需要消耗大量CPU[5][11][6],也间接因为性能瓶颈的降低提升了应用程序的可扩展性[15][16][17],提升如此显著的原因是操作码被缓存,PHP无需再读取、解析、编译原始码[4]

參考資料

[编辑]
  1. ^ PHP手册编辑团队. PHP: OPcache - Manual. PHP官方网站. [2025-10-28] (中文). 
  2. ^ 2.0 2.1 Ajzele, Branko. Mastering PHP 7: design, configure, build, and test professional web appilcations in PHP 7. Birmingham, UK: Packt Publishing. : 196 [2025-12-06]. ISBN 9781785889943. 
  3. ^ 3.0 3.1 3.2 WebGo. OPCache - Was ist das?. WebGo FAQs. [2025-10-29] (德语). 
  4. ^ 4.0 4.1 Josh Lockhart. 2. Modern PHP: New Features and Good Practices. [2025-12-06]. ISBN 9781491904992 (英语). 
  5. ^ 5.0 5.1 5.2 PHP 优化性能之 Opcache 扩展. VEITOOL. VEITOOL. 2024-09-13 [2025-11-01] (中文(中国大陆)). 
  6. ^ 6.0 6.1 6.2 6.3 6.4 Joe Niland. PHP OPcache Quick Reference. Sydney Blog. [2025-10-28] (英语). 
  7. ^ 7.0 7.1 PHP手册编辑团队. PHP: 简介 - Manual. PHP官方网站. [2025-10-28] (中文). 
  8. ^ PHP手册编辑团队. PHP: 预加载 - Manual. PHP官方网站. [2025-10-28] (中文). 
  9. ^ Erik Pöhler. Enable, configure and monitor PHPs OPCache - Erik Pöhler's Weblog. Erik Pöhler's Blog. [2025-10-30] (英语). 
  10. ^ PHP 8.4: Opcache: INI 对 JIT 启用方式的更改 | 日思录. 日思录. 2024-02-29 [2025-11-02]. [需要較佳来源]
  11. ^ 11.0 11.1 Shahzeb Ahmed. PHP OPcache Explained: How to Improve Your App's Performance. Cloudways. 2018-11-22 [2025-10-30] (英语). 
  12. ^ HiBit. Boosting PHP performance with OPCache. HiBit Blog. [2025-10-28] (英语). 
  13. ^ Harish Kumar. PHP OPCache: The Secret Weapon for Laravel Performance Boost. Qirolab. 2024-07-26 [2025-10-30] (英语). 
  14. ^ 掌握PHP缓存利器:OPcache与APCu深度解析与优化技巧 - 云原生实践. 云原生实践. 2025-03-04 [2025-11-02]. [需要較佳来源]
  15. ^ LiquidWeb文档作者团队. Zend OpCache for PHP. Liquid Web. [2025-10-30] (英语). 
  16. ^ Tejas. PHP 8+ Performance Tuning for WordPress: OPcache and Beyond - WisdmLabs. Wisdm Labs. 2025-08-13 [2025-10-30] (英语). 
  17. ^ 王宏仁. PHP核心開發者告訴你PHP 7的五大效能密技. iThome. 2015-12-26 [2025-11-01] (中文(臺灣)). 

外部連結

[编辑]