PHP 本身支持 CGI、FastCGI、mod_php、php-fpm的模式区别是什么?底层原理是什么?

这几种模式都是 PHP 运行在 Web 服务器中的方式,它们的主要区别如下:

CGI (Common Gateway Interface):是一种通用的 Web 服务器和外部应用程序之间进行数据交互的标准协议,它定义了 Web 服务器和外部应用程序之间传递数据的格式和规范。在 CGI 模式下,PHP 程序每次请求都需要启动一个新的进程来处理请求,并在请求处理完毕后结束进程,因此效率较低。

FastCGI:是对 CGI 的一种改进,它可以在进程池中维护多个 PHP 进程,并与 Web 服务器保持长连接,以提高性能。在 FastCGI 模式下,PHP 进程只在启动时创建一次,并保持运行状态,不需要每次请求都重新启动进程。

mod_php:是 Apache Web 服务器中的一种模块,可以将 PHP 解析器集成到 Apache 进程中,以便直接处理 PHP 脚本,提高性能和效率。在 mod_php 模式下,PHP 程序可以直接访问 Web 服务器的内部状态和变量,因此可以更加高效地处理请求。

php-fpm (PHP FastCGI Process Manager):是一个独立的 PHP 进程管理器,可以管理 FastCGI 模式下的 PHP 进程池,并提供进程调度、进程监控、请求处理等功能。php-fpm 可以独立于 Web 服务器运行,也可以与 Nginx、Apache 等 Web 服务器配合使用。

总的来说,这些模式的底层原理都是通过将 PHP 解释器嵌入到 Web 服务器中,使得 PHP 脚本可以与 Web 服务器交互,并提高处理效率和性能。不同的模式在性能、安全性、扩展性等方面有着不同的优缺点,开发人员可以根据实际需求选择适合的模式。