PHP知识笔记:CGI, FastCGI, PHP-CGI, PHP-FPM, Spawn-FCGI区别

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: PHP知识笔记:CGI, FastCGI, PHP-CGI, PHP-FPM, Spawn-FCGI区别

原作者链接:https://www.aicyun.com/article/34

原理

nginx只是 web 中的内容分发者,比如,如果请求/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是/index.php,根据配置文件,nginx知道这个不是静态文件,需要去找PHP解析器来处理,那么他会把这个请求简单处理后交给PHP解析器。即启动对应的CGI程序,PHP解析器会解析php.ini文件,初始化一个环境进程,然后处理请求,在以规定CGI规定的格式返回处理后的结果,退出进程,nginx 在把结果返回给浏览器.

CGI

CGI是公共网关接口(common gateway interface);http 服务器与你的或者其他机器上的程序进行交谈的一种工具,程序需运行在网络服务器上
CGI可以用于任何语言,只有这种语言具有标准的输入,输出和环境变量.
CGI是个协议.

FastCGI

Fastcgi是用来提高CGI程序性能的,CGI程序的性能出在CGI对每个请求都会执行解析php.ini初始化执行环境这些步骤,每次请求都启动一个进程,假如有几千万请求那就完了.
Fastcgi会先启动一个master,专门解析配置,初始化环境,在启动多个worker进程,请求来了,master会传递给一个worker,然后继续等待下一个请求,这就避免了重复的解析和初始化,效率提升不少.假如worker进程不够,master主进程会多启动几个 worker,如果空闲了,master 会主动停止一些 worker.这节省了大量的资源

PHP-CGI

PHP-CGI是PHP自带的FastCGI管理器
弊端:

  • php-cgi假如改了配置文件需要重启php-cgi,不能做到平滑重启
  • 直接杀死php-cgi进程,php 就不能运行了

PHP-FPM

PHP-FPM是一个PHP FastCGI管理器,准确的说是管理的 php-cgi,fastcgi是一种协议,和进程无关.php-fpm在修改php.ini后不像php-cgi不能平滑重启.php-fpm会让新的worker用新的配置,已经存在的 worker 处理完了就停止了.

php-cgi只是解释PHP脚本的程序而已

Spawn-FCGI

通用的FastCGI管理服务器,lighttpd的一部分.最新的lighttpd也没有包含这一块,不建议使用.

目录
相关文章
ly~
|
3月前
|
安全 Java 大数据
php跟java有什么区别
PHP 和 Java 是两种常用编程语言,各有特色。PHP 语法简洁灵活,适用于快速开发中小型网站,尤其在 Web 脚本和数据库交互中表现出色。Java 则语法严谨,强类型特性使其在企业级应用、移动开发及大数据处理中更受欢迎,具备高稳定性和安全性。通过优化,PHP 性能可提升,而 Java 在大规模应用中表现更佳。总体而言,PHP 开发效率高但维护性稍差,Java 则更注重代码质量和安全性。
ly~
93 5
|
3月前
|
SQL 关系型数据库 数据库连接
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
本文介绍了PHP中PDO(PHP Data Objects)扩展的基本概念和使用方法。内容包括PDO类和PDOStatement类的介绍,PDO的简单使用,预定义占位符的使用方法,以及PDOStatement对象的使用。文章还讨论了绑定预定义占位符参数的不同形式,即bindValue和bindParam的区别。通过具体示例,展示了如何使用PDO进行数据库连接、数据查询、数据插入等操作。
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
|
6月前
|
自然语言处理 安全 PHP
PHP 之道笔记整理:最佳实践与安全指南
这篇文章讨论了PHP开发中的最佳实践,包括使用最新稳定版(PHP 8.3)以提升性能和安全,利用`DateTime`类及Carbon库处理日期时间,确保使用UTF-8编码并用`mb_*`函数处理字符串,以及通过密码哈希和数据过滤来加强Web应用安全。文章提醒开发者始终保持对新技术和安全实践的关注。
101 2
|
6月前
|
PHP
PHP &&是什么,||是什么,&&和||有什么区别?
PHP &&是什么,||是什么,&&和||有什么区别?
60 1
|
7月前
|
应用服务中间件 Linux PHP
Linux下安装php环境并且配置Nginx支持php-fpm模块
Linux下安装php环境并且配置Nginx支持php-fpm模块
668 0
|
7月前
|
JSON JavaScript Java
【PHP】英文博客专栏PHP快速入门个人笔记
【PHP】英文博客专栏PHP快速入门个人笔记
145 1
|
7月前
|
PHP 调度
PHP CGI、FastCGI、PHP-FPM、PHP-CGI 区别
PHP CGI、FastCGI、PHP-FPM、PHP-CGI 区别
85 5
|
1月前
|
前端开发 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
47 0