当前位置: 首页 > 后端技术 > PHP

cgi、fastcgi、php-cgi、php-fpm的异同

时间:2023-03-30 01:58:56 PHP

1.cgi-通用网关接口,它是外部应用程序(cgi程序)和Web服务器之间的接口标准。-nginx是内容分发器。如果请求index.php,根据配置文件的内容,知道不是静态文件,就会找到对应的cgi程序进行分析。-cgi是指定要传输的数据,以什么格式传递给后面处理的协议-cgi工作模式,发送一个请求,启动cgi解释器(创建进程)->逻辑处理->exit(forkandexecmode)每次都需要重新创建进程,加载配置,浪费系统资源2.fastcgi-快速通用网关接口,常驻cgi,不需要每次都fork进程,它会让cgi解释器进程常驻内存,所以性能更高-master-worker模型,服务器启动时加载fastcgi进程管理器时-fastcgi会自己初始化,初始化时会创建多个进程-请求到达web服务器后,fastcgiprocessmanager会通过socket选择并连接到一个cgi解释器3.php-cgi-php自带的cgi管理器-php-cgi的缺点,不能顺利重启,需要重启php-cgi才能使php.我采取e影响4.php-fpm-php-fpm是php的一个fastcgi实现管理php的fastcgi进程池-能够调度php-cgi程序-能够实现平滑重启-php-fpm创建一个master进程,然后再创建一个进程pool,监听sockets,fork出多个子进程,每个子进程接受请求,php-fpm的子进程同时只能响应一个请求,处理完一个请求才能接受下一个请求,多进程,同步阻塞模型——master和worker进程之间没有直接通信,master使用共享内存获取worker进程信息,master进程发送信号通知worker进程——php-fpm可以监听多个同时ports,每个port对应一个workerpool——worker是一个cgi程序,php-fpm是fastcgi协议的php实现