`

php-cgi和php-fpm有什么关系

    博客分类:
  • PHP
 
阅读更多

 

转:https://segmentfault.com/q/1010000008356979

 

clipboard.png

clipboard.png

webapp即是PHP解析器等

Web Server收到 index.php 这个请求后,会启动对应的 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等应用程序。

clipboard.png

  1. Web Server启动时载入FastCGI进程管理器(Apache Module或IIS ISAPI等)

  2. FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可建多个php-cgi),并等待来自Web Server的连接。

  3. 当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

  4. 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就是很大的内存数。
升级:

clipboard.png

  • 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、Spawn-FCGI 详解 ...CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI都是网络服务器与程序进行“交谈”的工具,每种工具都有其优点和不足之处,选择合适的工具取决于具体的应用场景。

    php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?

    在配置PHP环境时,选择CGI、FastCGI、PHP-CGI或PHP-FPM取决于具体需求。CGI适用于轻量级的静态网站,而FastCGI(尤其是PHP-FPM)更适合需要高效处理动态内容的高流量网站。在内存资源充足的情况下,PHP-FPM通常是...

    一文读懂CGI、FastCGI、php-cgi、php-fpm的区别

    一文读懂cgi、fastcgi、php-cgi、php-fpm的区别CGI诞生之前CGI的诞生CGI程序如何工作Web服务器的内置模块FastCGIphp-fpmphp-cgiphp-cgi与php-fpm的区别 CGI诞生之前 在CGI诞生之前Web服务器负责静态文件的存储、查找...

    mod_php和mod_fastcgi和php-fpm的介绍,对比,和性能数据

    ### mod_php和mod_fastcgi及...综上所述,mod_php、mod_fastcgi和php-fpm各有优缺点,选择哪种方式取决于具体的应用场景和需求。在实际应用中,php-fpm因其优秀的并发处理能力和灵活性,成为大多数开发者的选择。

    php-fpm.tar.gz

    PHP-FPM,全称为“PHP FastCGI Process Manager”,是PHP的一个重要组件,专为管理和优化PHP应用程序的FastCGI进程而设计。在本篇中,我们将深入探讨PHP-FPM的含义、功能以及如何在Linux环境中进行安装和使用。 ...

    PHP-CGI远程代码执行漏洞分析与防范

    对于CGI模式,应尽量避免使用,优先考虑使用更安全的FastCGI(如PHP-FPM)。此外,配置Web服务器以限制对CGI脚本的访问,如仅允许特定的脚本执行,或者使用更严格的输入验证和过滤机制,防止恶意的查询字符串被误...

    PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析

    然而,当它用于获取远程HTTP资源时,如果目标网站响应缓慢或出现故障,可能会导致严重的性能问题,尤其是在使用PHP-CGI(PHP FastCGI)的Web服务器上,如Nginx和php-fpm的组合。 在描述的问题中,服务器的CPU负载...

    Linux下php-cgi占内存100%电脑变的很卡的解决方法.docx

    - 同样,查看php-cgi的日志文件,位于`/usr/local/php_fcgi/logs`下的`php-fpm.log`和`slow.log`,这些文件能帮助定位引起高CPU占用的具体脚本或操作。 2. **max_execution_time配置**: - 在PHP配置文件`...

    (完整版)[好文]mod-php和mod-fastcgi和php-fpm的介绍-对比-和性能数据.doc

    mod_fastcgi 和 PHP-FPM 则通过进程分离和更精细的管理提供了更好的性能和可扩展性。在实际应用中,应根据服务器硬件资源、并发需求以及系统维护成本来选择合适的 PHP 运行方式。对于高并发、资源有限的环境,推荐...

    php7.3.33.tar.gz 源码安装包

    - `--with-fpm-user` 和 `--with-fpm-group`:设置FPM运行时的用户和组。 - 其他`--with-`选项用于选择和配置扩展。 ### 四、编译与安装 配置完成后,执行`make`命令进行编译,然后使用`make install`来安装: ``...

    LAMP+php-fpm服务器+php7.16

    在这个过程中,`./configure`命令被用来配置编译选项,比如设置安装路径、启用特定扩展(如mcrypt、mhash、openssl、mbstring、curl、gd等),以及为php-fpm指定运行用户和用户组。这样,PHP将能够与Apache协同工作...

    php-strace:php-strace 有助于跟踪运行 php 进程中的段错误。 它为每个正在运行的 php5-cgi 或 php-fpm 进程启动一个新的 strace 实例,以监控是否发生了段错误

    它为每个正在运行的 php5-cgi 或 php-fpm 进程启动一个新的 strace 实例,以监控是否发生了段错误。 如果发生segfault,它会显示错误进程的strace 输出。 要求 Linux PHP 5.3.3 或更高版本 安装了strace 根访问...

    php-fpm5.5.8

    2. **快速响应**:相比于传统的CGI方式,FastCGI能够保持长期运行的进程,减少了每次请求时的启动和初始化时间,提高了响应速度。 3. **日志管理**:PHP-FPM提供单独的日志文件,方便开发者追踪和分析问题,优化...

    PHP-FPM实现性能优化

    2. **资源限制**:如`rlimit_files`用于设置文件描述符限制,确保PHP-FPM有足够的资源处理请求。 3. **缓存利用**:启用OPCache可以显著提高PHP的执行效率,减少解释器的负担。 4. **错误日志分析**:定期检查错误...

    php-fpm中文文档.pdf

    与传统的CGI相比,FastCGI能够复用已有的进程,从而减少进程创建和销毁带来的性能开销。 3. PHP-FPM支持的Web服务器包括但不限于Apache、Nginx和lighttpd。通过mod_fastcgi、mod_fcgid等模块或插件,PHP-FPM可以与...

    Nginx+PHP-FPM+APC=绝妙的组合.pdf

    PHP-FPM能够更智能地管理PHP进程,根据需要启动和终止PHP-CGI进程,从而减少内存占用并提高响应速度。与mod_php不同,mod_php将PHP解释器内嵌到Apache中,每次请求都会加载整个PHP环境,而PHP-FPM则允许PHP作为独立...

    源码安装nginx+php-fpm+http push测试通过

    在IT行业中,构建高效、可扩展的Web服务是至关重要的,而`Nginx`、`PHP-FPM`和`HTTP Push`技术是实现这一目标的关键组件。本教程将详细介绍如何在`CentOS 5.2`操作系统上,通过源码安装`Nginx`、`PHP-FPM`,并实现`...

    centos源码安装php-8.1.1+phpredis-4.2.0

    CentOS 源码安装 PHP 8.1.1 + PHPRedis 4.2.0 ..../configure --prefix=/usr/local/php --enable-opcache --enable-fpm --enable-sockets --enable-mysqlnd --enable-mbstring --enable-bcmath --with-fpm-user=...

Global site tag (gtag.js) - Google Analytics