什么是PHP-FPM
PHP-FPM(FastCGI进程管理器) 是PHP FastCGI的最着名的选择性执行方式。PHP( PHP:超文本预处理器的缩写 )是互联网上最知名的开源语言之一,用于像Magento、WordPress或Drupal这样的平台上进行网页开发,尽管它最初是用于预处理UTF-8的纯文本。
PHP由 Rasmus Lerdorf于1995年 创建,是最早可以在HTML代码中包含而没有调用外部文件的语言之一。这种广泛适用于服务器端的编程语言不断发展,以便能够支持任何操作系统或网络平台。此外,它不断发展,并在PHP许可证下发布,该许可证与GNU通用公共许可证不兼容,因为PHP表达式的用途限制。
什么是PHP-FPM及其特点
PHP-FPM是PHP FastCGI的最着名的选择性执行方式。它具有其他功能,非常适用于高流量网站。这些是其中一些功能:
- 高级管理,使得轻松停止/启动进程。
- 可以使用不同的uid/gid/chroot/climate和其他php.ini开始工作;它替代了safe_mode。
- 标准输出和错误日志记录。
- 在操作码缓存意外破坏时进行紧急重启。
- 加速能力支持上传。
- 慢日志变量设置,用于识别执行时间超出预期的函数。
- 基于php.ini配置文件。
- FastCGI升级,如fastcgi_finish_request(),具有特殊功能,可以在您继续执行更长时间的进程(例如视频转换或统计处理)时暂停和下载所有数据。
- 基本统计信息(类似于Apache的mod_status模块)。新!
Nginx和PHP-FPM
Nginx是一种稳定且性能出色的网络服务器,资源使用率极低,非常适合与PHP-FPM配合使用。Nginx具有一种非传统的架构,基于事件的灵活性更强。此外,当与PHP-FPM一起使用时,可将内存使用级别提升到更高水平。
在使用PHP-FPM时,PHP作为一个独立的服务运行。通过将此PHP版本作为语言解释器,请求通过TCP/IP套接字处理,因此Nginx仅处理HTTP请求,而PHP-FPM解析PHP代码。拥有两个独立的服务对于提高效率至关重要。
HHVM: 曾经是PHP-FPM的替代方案
目前,HHVM已不再使用。随着最新版本的PHP与FPM的发布,这种语言的性能已经达到或甚至超过了使用HHVM而无需使用PHP 7的大多数功能。
直到出现PHP 7之前,Facebook创建的PHP HHVM处理器被广泛使用,该处理器在GIT上提供了PHP和Zend许可证。HHVM(HipHop虚拟机)是一个基于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的支持是至关重要的。