php fast CGI与php-fpm
PHP-FPM、CGI 和 FastCGI 是在 Web 服务器中处理 PHP 脚本的不同方式。下面是它们的详细介绍:
-
CGI(通用网关接口):
- CGI 是最早的用于在 Web 服务器和外部应用程序之间传输数据的标准化协议。
- 当用户请求一个 CGI 脚本时,Web 服务器会启动一个新的进程来执行该脚本。这个进程会处理用户请求,并生成一个 HTTP 响应,然后关闭。
- 每次请求都需要启动一个新的进程,这会导致性能开销增加,因为进程的启动和关闭需要消耗资源。
-
FastCGI:
- FastCGI 是对 CGI 的改进,旨在减少 CGI 的性能开销。
- 与 CGI 不同,FastCGI 会保持一个长期运行的进程池,而不是为每个请求启动一个新的进程。这样可以避免反复启动和关闭进程的开销。
- FastCGI 进程在收到请求后会处理它,并将响应发送回 Web 服务器,然后等待下一个请求。
- 这种方式减少了每个请求的开销,提高了性能,特别是在高负载的情况下。
-
PHP-FPM(PHP FastCGI 进程管理器):
- PHP-FPM 是 PHP 的 FastCGI 实现,它充当了 FastCGI 服务器,负责管理 PHP 进程池。
- PHP-FPM 允许您配置 PHP 进程池的大小、内存限制、并发连接数等参数,以优化 PHP 的性能和资源利用率。
- PHP-FPM 可以与各种 Web 服务器(如 Nginx、Apache)配合使用,通过 FastCGI 协议来处理 PHP 脚本。
综上所述,CGI 是最基本的方式,但性能开销较大;FastCGI 是对 CGI 的改进,通过长期运行的进程池来降低性能开销;而 PHP-FPM 则是针对 PHP 的 FastCGI 实现,提供了更多的配置选项和管理功能,用于优化 PHP 脚本的执行。
基本概念:
fpm (FastCGI Process Manager)
一种php的运行模式,管理php进程池,在php-fpm模式下,php进程被分配为一个或多个进程池,等待处理来自web的请求,根据php-fpm.conf 配置动态调整每个线程池的数量,以应对不同的负载
fast CGI
CGI是一种协议,保证web server传过来的标准格式。
fastCGI是一个协议,php-fpm就实现了这个协议,php-fpm管理fastCGI,fast CGI就是提高CIT处理process性能用的。
fpm运行模式
在php-fpm中,有一个主进程(master process)和多个子进程(worker process)运行模式
主进程(master process):
负责初始化和管理整个php-fpm进程池,主进程启动时会读取配置(php-fpm.conf)文件,根据配置创建子进程池。
还负责监听来自web服务器的连接请求,并将请求分配给子进程
子进程(worker process):
由主进程创建,负责处理来自web服务的php请求,子进程不断接受请求,并使用php解释器执行php脚本。
子进程池可以根据配置自动调整大小,适应不同的负载情况。
fpm三种运行模式:
· ondemand
按需启动worker进程,在php-fpm启动的时候不会启动任何worker, 当有连接(包括telnet)过来时才会启动。
适合少量的web的请求,毕竟现在的硬件也很便宜,不需要为了优化这么点内存,采取ondemand模式。
如果有大量请求进来时,每次都要走重复启动worker的进程,造成系统的压力。
· dynamic
当启动fpm时会初始化一些空闲的worker, master进程每隔一秒会根据配置动态调整worker数量,当有请求进来时,直接由主进程分配给子进程处理web请求。
采用动态扩容的方式,不浪费系统资源。但是如果所有的worker都在工作时,新的请求到来需要等待master 的1秒定时器再新建一个worker,造成延迟一秒处理的问题。
· static
fpm启动时启动固定数量的worker,过程中不会扩容,仅受max_children的影响,数量取决于cpu的个数和应用的相应时间。
适用于固定范围的web的请求。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具