转: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 详解 ...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诞生之前CGI的诞生CGI程序如何工作Web服务器的内置模块FastCGIphp-fpmphp-cgiphp-cgi与php-fpm的区别 CGI诞生之前 在CGI诞生之前Web服务器负责静态文件的存储、查找...
### mod_php和mod_fastcgi及...综上所述,mod_php、mod_fastcgi和php-fpm各有优缺点,选择哪种方式取决于具体的应用场景和需求。在实际应用中,php-fpm因其优秀的并发处理能力和灵活性,成为大多数开发者的选择。
PHP-FPM,全称为“PHP FastCGI Process Manager”,是PHP的一个重要组件,专为管理和优化PHP应用程序的FastCGI进程而设计。在本篇中,我们将深入探讨PHP-FPM的含义、功能以及如何在Linux环境中进行安装和使用。 ...
对于CGI模式,应尽量避免使用,优先考虑使用更安全的FastCGI(如PHP-FPM)。此外,配置Web服务器以限制对CGI脚本的访问,如仅允许特定的脚本执行,或者使用更严格的输入验证和过滤机制,防止恶意的查询字符串被误...
然而,当它用于获取远程HTTP资源时,如果目标网站响应缓慢或出现故障,可能会导致严重的性能问题,尤其是在使用PHP-CGI(PHP FastCGI)的Web服务器上,如Nginx和php-fpm的组合。 在描述的问题中,服务器的CPU负载...
- 同样,查看php-cgi的日志文件,位于`/usr/local/php_fcgi/logs`下的`php-fpm.log`和`slow.log`,这些文件能帮助定位引起高CPU占用的具体脚本或操作。 2. **max_execution_time配置**: - 在PHP配置文件`...
mod_fastcgi 和 PHP-FPM 则通过进程分离和更精细的管理提供了更好的性能和可扩展性。在实际应用中,应根据服务器硬件资源、并发需求以及系统维护成本来选择合适的 PHP 运行方式。对于高并发、资源有限的环境,推荐...
- `--with-fpm-user` 和 `--with-fpm-group`:设置FPM运行时的用户和组。 - 其他`--with-`选项用于选择和配置扩展。 ### 四、编译与安装 配置完成后,执行`make`命令进行编译,然后使用`make install`来安装: ``...
在这个过程中,`./configure`命令被用来配置编译选项,比如设置安装路径、启用特定扩展(如mcrypt、mhash、openssl、mbstring、curl、gd等),以及为php-fpm指定运行用户和用户组。这样,PHP将能够与Apache协同工作...
它为每个正在运行的 php5-cgi 或 php-fpm 进程启动一个新的 strace 实例,以监控是否发生了段错误。 如果发生segfault,它会显示错误进程的strace 输出。 要求 Linux PHP 5.3.3 或更高版本 安装了strace 根访问...
2. **快速响应**:相比于传统的CGI方式,FastCGI能够保持长期运行的进程,减少了每次请求时的启动和初始化时间,提高了响应速度。 3. **日志管理**:PHP-FPM提供单独的日志文件,方便开发者追踪和分析问题,优化...
2. **资源限制**:如`rlimit_files`用于设置文件描述符限制,确保PHP-FPM有足够的资源处理请求。 3. **缓存利用**:启用OPCache可以显著提高PHP的执行效率,减少解释器的负担。 4. **错误日志分析**:定期检查错误...
与传统的CGI相比,FastCGI能够复用已有的进程,从而减少进程创建和销毁带来的性能开销。 3. PHP-FPM支持的Web服务器包括但不限于Apache、Nginx和lighttpd。通过mod_fastcgi、mod_fcgid等模块或插件,PHP-FPM可以与...
PHP-FPM能够更智能地管理PHP进程,根据需要启动和终止PHP-CGI进程,从而减少内存占用并提高响应速度。与mod_php不同,mod_php将PHP解释器内嵌到Apache中,每次请求都会加载整个PHP环境,而PHP-FPM则允许PHP作为独立...
在IT行业中,构建高效、可扩展的Web服务是至关重要的,而`Nginx`、`PHP-FPM`和`HTTP Push`技术是实现这一目标的关键组件。本教程将详细介绍如何在`CentOS 5.2`操作系统上,通过源码安装`Nginx`、`PHP-FPM`,并实现`...
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=...