什么是PHP-FPM?

17 Mar 2025 | 4 分钟阅读

PHP-FPM (FastCGI 进程管理器) 是最著名的PHP FastCGI替代实现。PHP (PHP的缩写:Hypertext Preprocessor) 是互联网上最受欢迎的开源语言之一,用于Magento、WordPressDrupal 等平台的Web开发。尽管它最初是为了在UTF-8中预处理纯文本而设计的。

PHP由Rasmus Lerdorf于1995年创建,是最早可以包含在HTML代码中而无需调用外部文件的语言之一。这种广泛适用于服务器端的脚本语言不断发展,以便能够被任何操作系统或Web平台支持。此外,它仍在发展中,并根据PHP许可证发布,由于PHP表达式的使用限制,该许可证与GNU通用公共许可证不兼容。

什么是PHP-FPM及其特点?

PHP-FPM是PHP FastCGI最受欢迎的替代实现。它具有额外的功能,对高流量网站非常有用。以下是其中一些功能:

  • 高级管理,能够轻松停止/启动进程。
  • 能够使用不同的uid/gid/chroot/环境和不同的php.ini开始工作;它取代了safe_mode。
  • Stdout和stderr日志记录。
  • 在opcode缓存意外销毁时进行紧急重启。
  • 加速上传。
  • 慢日志变量配置;用于识别哪些函数执行时间超出了预期。
  • 基于php.ini配置文件。
  • FastCGI升级,例如fastcgi_finish_request(),具有暂停和下载所有数据的特殊能力,同时您可以继续进行更长时间的进程,例如视频转换或数据处理。
  • 基本统计信息(类似于Apache的mod_status模块)。新功能!

Nginx和PHP-FPM

Nginx作为稳定高性能的Web服务器,资源利用率极低,是PHP-FPM的理想搭档。Nginx具有无当代架构,基于事件,更加灵活。此外,在使用Nginx与PHP-FPM时,内存利用率级别的性能得到了提升。

在使用PHP-FPM时,PHP作为独立服务运行。通过将此PHP版本作为语言解释器,请求通过TCP/IP套接字处理,因此Nginx Web服务器仅处理HTTP请求,PHP-FPM解释PHP代码。拥有两个独立服务对于提高效率至关重要。

HHVM: PHP-FPM的早期替代方案

目前,HHVM已不再使用。随着最终PHP版本与FPM的出现,该语言的性能已经接近甚至超过了HHVM的性能,而无需使用HHVM——与PHP 7的大多数功能兼容。

直到PHP 7出现之前,Facebook开发并以PHP和Zend许可证发布在GIT上的PHP HHVM处理器经常被使用。HHVM (HipHop Virtual Machine) 是一个基于JIT(即时编译)编译器的开源虚拟机,它作为PHP和Hack的执行引擎。

通过使用JIT编译器规则,HHVM将PHP或Hack代码部分执行为字节码HipHop代码,该代码随后被转换为机器码,本地优化并执行。这与PHP的标准解释执行方式不同,在标准解释执行中,Zend引擎将PHP源代码转换为opcode(字节码结构),然后由Zend引擎的虚拟CPU执行。

PHP 7和未来版本的PHP

PHP 7 的出现使得性能与之前的PHP版本相比有了巨大的提升。这使得HHVM等用于加速服务的应用程序逐渐被遗弃。在这个PHP比较器中,您可以看到不同PHP版本在一些应用程序上的差异。同一个图表显示,自PHP 5以来,性能几乎翻了一番。

对于下一个重要版本 PHP 8,其改进似乎主要集中在新功能的开发上,而不是大幅度提高速度。因此,为了避免应用程序在更新后停止工作,在更新时必须考虑应用程序与新版本中包含的更改之间的兼容性。

WordPress与PHP-FPM

如果您有一个内容平台、在线报纸,或者只是一个需要高性能并获得数千或数百万访问量的WordPress,那么您显然需要一个支持PHP-FPM的Nginx服务器。这将使您能够更有效地设置WordPress CMS的PHP代码执行。

Magento与PHP-FPM

电子商务平台Magento也与Nginx和PHP-FPM良好集成。事实上,为了在您的在线商店中获得最佳性能,除了使用负载均衡器和缓存之外,使用这个流行的Web服务器以及PHP-FPM的支持也至关重要。


下一主题PHP静态变量