转:https://segmentfault.com/q/1010000008356979
webapp即是PHP
解析器等
当Web Server
收到 index.ph
p 这个请求后,会启动对应的 CGI 程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini
文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程,Web server再把结果返回给浏览器。这就是一个完整的动态PHP Web访问流程,接下来再引出这些概念,就好理解多了,
-
CGI
:是 Web Server 与 Web Application 之间数据交换的一种协议。 -
FastCGI
:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。同样,SCGI 协议与 FastCGI 类似。 -
PHP-CGI
:是 PHP (Web Application)对 Web Server 提供的 CGI
协议的接口程序。 -
PHP-FPM
:是 PHP(Web Application)对 Web Server 提供的 FastCGI 协议的接口程序,额外还提供了相对智能一些任务管理。
WEB 中
-
Web Server
一般指Apache、Nginx、IIS、Lighttpd、Tomcat等服务器, -
Web Application
一般指PHP、Java、Asp.net等应用程序。
-
Web Server
启动时载入FastCGI进程管理器(Apache Module或IIS ISAPI等) -
FastCGI
进程管理器自身初始化,启动多个CGI解释器进程(可建多个php-cgi),并等待来自Web Server的连接。 -
当客户端请求到达
Web Server
时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。 -
FastCGI子
进程完成处理后,将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待,并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。
FastCGI与CGI特点:
对于CGI
来说,每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展,并重初始化全部数据结构。而使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。
由于FastCGI是多进程,所以比CGI多线程消耗更多的服务器内存,php-cgi解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。
升级:
-
php-fpm即php-Fastcgi Process Manager.
-
php-fpm是 FastCGI 的实现,并提供了进程管理的功能。
进程包含 master
进程和 worker
进程两种进程。
master
进程只有一个,负责监听端口,接收来自 Web Server
的请求,而 worker
进程则一般有多个(具体数量根据实际需要配置),每个进程内部都嵌入了一个 PHP 解释器,是 PHP 代码真正执行的地方。
相关推荐
什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI.pdf
一文读懂cgi、fastcgi、php-cgi、php-fpm的区别CGI诞生之前CGI的诞生CGI程序如何工作Web服务器的内置模块FastCGIphp-fpmphp-cgiphp-cgi与php-fpm的区别 CGI诞生之前 在CGI诞生之前Web服务器负责静态文件的存储、查找...
CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等 什么是FastCGI FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork...
有时候,运行 Nginx、PHP-CGI(php-fpm) Web服务的 Linux 服务器,突然系统负载上升,使用 top 命令查看,很多 php-cgi 进程 CPU 使用率接近100%。
它为每个正在运行的 php5-cgi 或 php-fpm 进程启动一个新的 strace 实例,以监控是否发生了段错误。 如果发生segfault,它会显示错误进程的strace 输出。 要求 Linux PHP 5.3.3 或更高版本 安装了strace 根访问...
本文主要给大家介绍了关于php-fpm开启状态统计的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 启用php-fpm状态功能 $ cat /usr/local/php/etc/php-fpm.conf | grep status pm.status_path = /...
CVE-2012-1823出来时据说是...sapi在PHP中的作用,类似于一个消息的“传递者”,比如我在《 Fastcgi协议分析 && PHP-FPM未授权访问漏洞 && Exp编写 》一文中介绍的fpm,他的作用就是接受Web容器通过fastcgi协议封装
PHP-FPM 是什么? PHP-FPM 是 FastCGI 的进程管理器。 PHP-FPM 的特点 支持平滑停止、启动的高级进程管理功能 动、静态子进程产生 慢日志,记录脚本运行所导致的异常缓慢 可以监听不同的端口和使用不同的 ...
动机以前在工作中,我们有同时包含php-fpm和Nginx进程的Docker容器,而它们由另一个进程管理,例如或 。 一个很好的例子是它确实运行良好,但是我想实现其他一些功能,例如使用官方映像及其发布周期,属于自己进程的...
什么是PHP-FPM PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到. PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它pa
网站常出现502 bad gateway,程序没有问题。...php fpm配置文件里有backlog,backlog是linux服务器在socket处理连接数的定义,phpfpm默认为-1,将-1改为4096,重启php fpm问题解决。 您可能感兴趣的
由于只是开发环境,所以都是选择比较简单的apt-get...linux底下的cgi程序非常多,在这里我选择的是php5-fpm 方便 在这里其实有个坑,网上很多资料都说安装cgi之后默认的端口都是9000,我这里就出错了。 安装好之后,在
码头工人PHP PHP-FPM Docker映像 docker run -d -e PHP_INI_ENV="date.timezone=UTC;short_open_tag=0;cgi.fix_pathinfo=0" mayeco/docker-php
■FastCGI 进程管理器 (FPM) ■PECL 扩展库安装 ■还有问题? ■运行时配置 ■语言参考 ■基本语法 ■类型 ■变量 ■常量 ■表达式 ■运算符 ■控制结构 ■函数 ■类与对象 ■命名空间 ■异常处理 ■引用的解释 ■...
PHP-FPM 介绍 CGI 协议与 FastCGI 协议 每种动态语言( PHP,Python 等)的代码文件需要通过对应的解析器才能被服务器识别,而 CGI 协议就是用来使解释器与服务器可以互相通信。PHP 文件在服务器上的解析需要用到 ...
莫维科 Moovico 是一个快速且可扩展的 MVC 框架和...) - 在 lighttpd/php-cgi 和 nginx/php-fpm 上测试 PHP >= 5.3 with mysqli-support 如果你想使用连接器。 执照 所有工作都是开源的,并在 BSD 许可下获得许可。
Java编写的连接php-fpm工具类,Java 实现 php解析应用 连接
■FastCGI 进程管理器 (FPM) ■PECL 扩展库安装 ■还有问题? ■运行时配置 ■语言参考 ■基本语法 ■类型 ■变量 ■常量 ■表达式 ■运算符 ■控制结构 ■函数 ■类与对象 ■命名空间 ■异常处理 ■引用的解释 ■...