PHP面试经常被问cgi、fastcgi、php-fpm、mod_php的区别
cgi、fastcgi、php-fpm、mod_php
cgi
- cgi是公共网关接口,用户通过浏览器来访问执行再服务器上的动态程序,CGI是Web 服务器与CGI程序间传输数据的标准。准确来说是一种协议,单进程模式,启动一个CGI进程(php-cgi)这个进程会先加载php.ini的配置,通过配置 处理详情工作,例如加载配置中的PHP扩展等,最后动态解析PHP程序,处理完请求直接关闭了。每次请求经历整个生命周期。
fastcgi
- fastcgi是快速通用网关接口,是CGI的优化升级。
- FastCGI 致力于减少Web服务器与CGI程序之间进行互动的开销,从而使Web服务器可以同时处理更多的Web请求。与 CGI 为每个Web请求创建一个新的进程不同, FastCGI 使用持续的进程来处理一连串的Web请求,这些进程由FastCGI进程管理器管理,而不是Web服务器。
- 由于 FastCGI 程序并不需要不断产生新进程,因此使用 FastCGI 可以大大降低Web服务器的压力并产生较高的应用效率。
- CGI 就是所谓的短生存期应用程序,而 FastCGI 就是所谓的长生存期应用程序, FastCGI 像是一个常驻(long-live)型的 CGI , FastCGI 可以一直执行着,而不会每次花费时间去fork(这也是 CGI 最为人诟病的 fork-and-execute 模式)。
php-fpm
- fpm是PHP FastCgi运行模式的一个进程管理器,FastCgi是Web服务器(Nginx、Apache)和处理程序之间的一种通信协议。
- PHP没有实现Http网络库,而是实现了FastCgi协议,通过与web服务器配合实现http的处理,web服务器处理http请求,将解析的结果通过fastcgi协议转发给PHP程序,PHP程序处理完将结果返回给web服务器,完成请求返回给客户端。
- fpm是一种多进程模型,它由一个master和多个worker进程组成。master进程启动时创建一个socket,但不会接收、处理请求,而是fork出多个worker子进程完成请求的接收及处理。
- worker请求生命周期:等待请求、解析请求、请求初始化、执行脚本、关闭请求。一个worker进程只能处理一个请求,只有等一个请求处理完才能处理下一个请求。这与nginx的事件模型有很大区别,nginx的子进程通过epoll管理套接字,一个进程会同时处理多个请求,它是非阻塞的模型,只处理活跃的套接字。
- master三种不同进程管理方式:静态模式(固定)、动态模式(动态)、按需模式(CGI)。
- 优点:1.兼容多数Web服务器2.比mod_php占内存小3.更多的配置项,包括多版本PHP和suexec缺点1.配置复杂2.不被大家所熟知
mod_php
- PHP以模块的方式运行在Apache中时,PHP解释器被“内嵌”在Apache的进程里。Apache不会调用任何外部的PHP进程,因此这种方式使Apache与PHP能更好的通信。但是,当以这种方式运行PHP的时候,哪怕Apache提供的仅仅是静态的资源(如HTML),Apache的每个子进程也都会载入 mod_php,导致了比正常情况下更多的内存开销。
- 优点:1.易于安装和更新2.容配置缺点:1.仅能与Apache一起工作2.增加了Apache子进程内存开销3.当更改php.ini文件后,需要重启Apache
PHP面试经常被问cgi、fastcgi、php-fpm、mod_php的区别的更多相关文章
- 面试官疯狂问我:char和varchar的区别 怎么办?愣着干嘛?进来白嫖啊!
MySQL的修仙之路,图文谈谈如何学MySQL.如何进阶!(已发布) 面前突击!33道数据库高频面试题,你值得拥有!(已发布) 大家常说的基数是什么?(已发布) 讲讲什么是慢查!如何监控?如何排查?( ...
- cgi fastcgi php-cgi php-fpm
参考: 摘至:http://www.cnblogs.com/thinksasa/p/4497567.html 详说fastcgi,php-fpm的区别:http://segmentfault.co ...
- Nginx + CGI/FastCGI + C/Cpp
接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...
- 漫谈CGI FastCGI WSGI
作者:auxten链接:https://zhuanlan.zhihu.com/p/20054757来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. CGI(Common ...
- [转] Nginx + CGI/FastCGI + C/Cpp
接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...
- JVM工作原理和特点(一些二逼的逼神面试官会问的问题)
作为一种阅读的方式了解下jvm的工作原理 ps:(一些二逼的逼神面试官会问的问题) JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完毕,通过以下4步来完毕JVM环境. ...
- PHP运行模式(cgi,fast-cgi,cli, ISAPI ,web模块模式)【转载】
PHP运行模式有5钟: 1)cgi 通用网关接口(Common Gateway Interface))2)fast-cgi 常驻 (long-live) 型的 CGI3)cli 命令行运行 (C ...
- CGI,FastCGI,PHP-CGI与PHP-FPM区别详解【转】
CGI CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上. CGI可以用任何一 ...
- cgi fast-cgi php-fpm区别
php-cli 是php在系统执行的程序,直接执行php文件: cgi和fast-cgi的区别1.cgi和fast-cgi都是php解析协议,负责解析服务器分发过来的php动态文件:cgi程序就会去解 ...
随机推荐
- MySQL:基础语法-1
MySQL:基础语法-1 记录一下 MySQL 基础的一些语法,便于查询,该部分内容主要是参考:bilibili 上 黑马程序员 的课程而做的笔记,由于时间有点久了,课程地址忘记了 关于数据库的安装操 ...
- Scrum Meeting 15
第15次例会报告 日期:2021年06月09日 会议主要内容概述: 开发工作接近尾声,接下来两天重点放在单元测试.调CSS和增加数据集数量上. 一.进度情况 我们采用日报的形式记录每个人的具体进度,链 ...
- 浅谈如何爆踩TLEcoders
对付一些速度比老奶奶都慢的评测姬, 除了超级小的常数,往往还不得不使用一些不算办法的办法 比如说这个让人无语的$ACcoders$的评测姬, 当我们感到代码已经无法再卡常的时候,对人生已经近乎绝望的时 ...
- [BZOI2014]大融合——————线段树进阶
竟然改了不到一小时就改出来了, 可喜可贺 Description Solution 一开始想的是边两侧简单路径之和的乘积,之后发现这是个树形结构,简单路径数就是节点数. 之后的难点就变成了如何求线段树 ...
- Python import Queue ImportError: No module named 'Queue'
python3 中引入Queue 会报出这个问题 python3 中这样引入 import queue python2 中这样引入 import Queue 为了兼容 可以这样 import sys ...
- C/C++如何传递二维数组?
用二维数组作为参数传递(用二维数组处理矩阵),但是希望接受传递二维数组参数的函数可以处理任意维度的数组(希望矩阵的行数和列数都是不固定的). ----------------------------- ...
- Linux初学者:从不同角度理解Linux系统
在我初学Linux系统时,虽然已经掌握了一些命令,但总觉得还是很混乱.大家新买的笔记本如果是Windows系统,那么第一件事往往就是分区,目的就是将系统和软件分开.然而Linux却没有类似于Windo ...
- Typecho 反序列化漏洞 分析及复现
0x00 漏洞简介 CVE-2018-18753 漏洞概述: typecho 是一款非常简洁快速博客 CMS,前台 install.php 文件存在反序列化漏洞,通过构造的反序列化字符串注入可以执行任 ...
- SpringCloud 2020.0.4 系列之 Sleuth + Zipkin
1. 概述 老话说的好:安全不能带来财富,但盲目的冒险也是不可取的,大胆筹划,小心实施才是上策. 言归正传,微服务的特点就是服务多,服务间的互相调用也很复杂,就像一张关系网,因此为了更好的定位故障和优 ...
- [第二章]c++学习笔记5(类型转换构造函数)
使用例 析构函数 使用例 析构函数和数组 delete运算符导致析构函数的调用