区分wsgi、uWSGI、uwsgi、php-fpm、CGI、FastCGI的概念

转载 2015年11月17日 19:26:49

举例说 PHP-CGI与PHP-FPM

你(PHP)去和爱斯基摩人(web服务器,如 Apache、Nginx)谈生意

你说中文(PHP代码),他说爱斯基摩语(C代码),互相听不懂,怎么办?那就都把各自说的话转换成英语(FastCGI 协议)吧。

怎么转换呢?你就要使用一个翻译机(PHP-FPM)

(当然对方也有一个翻译机,那个是他自带的)

我们这个翻译机是最新型的,老式的那个(PHP-CGI)被淘汰了。不过它(PHP-FPM)只有年轻人(Linux系统)会用,老头子们(Windows系统)不会摆弄它,只好继续用老式的那个。

wsgi:一种实现python解析的通用接口标准/协议

跟wsgi一样概念的有Ruby语言的Rack,可以认为wsgi是一种通用的接口标准或者接口协议,实现了python web程序与服务器之间交互的通用性。有了这个东西,web.py或者bottle或者django等等的python web开发框架,就可以轻松地部署在不同的web server上了,不需要做任何特殊配置(也需要一些小小的配置调整)

uwsgi:同WSGI一样是一种通信协议

uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。

uWSGI :一种python web server或称为Server/Gateway

uwsgi类似tornadoweb或者flup,是一种python web server,uWSGI是实现了uwsgi和WSGI两种协议的Web服务器,负责响应python 的web请求。因为apache也好,nginx也罢,它们自己都没有解析动态语言如php的功能,而是分派给其他模块来做,比如apache就可以说内置了php模块,支持的非常爽,让人感觉好像apache就支持php一样。uwsgi实现了WSGI协议、uwsgi、http等协议。 Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。类似的有:flup

php-fpm:php fastcgi进程管理器

Php-fpm全称是php fastcgi process manager即php fastcgi进程管理器,相比fastcgi静态的唤起cgi,fpm能根据访问的压力动态的唤起cgi进程和销毁以到达动态的调整cgi数量,这样可以有效的使用内存。除此之外还有其它的一些优点,比如,fpm还可以平滑的重载php配置;由于fpm是使用Unix-Socket来和服务器通讯,所以也不用再配置cgi端口;fpm有更好的状态输出和slowlog日志,502的时候能给出更多的错误细节。

CGI

CGI是一个通用的web标准,可以粗陋的认为CGI就是一种用任意语言写Web程序的标准。

FastCGI

FASTCGI是Web服务器(ex:nginx)和语言解释器(ex:uWsgi)两者底层的通信协议的规范,是对CGI的开放的扩展。

Php-FastCGI (用于处理php请求的东东)的工作过程是:

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

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

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

4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在 WebServer中)的下一个连接。 在正常的CGI模式中,php-cgi.exe在此便退出了。


nginx uwsgi wsgi django 这些东西究竟是什么关系

1 首先nginx 是对外的服务接口,外部liu'la

使用uWSGI Web服务器和Nginx部署Python WSGI应用

ZStack云计算 ,我们在之前的《Python Web服务器对比》文章中介绍过,uWSGI是一个宏大的项目,它能做的事情远远超过提供Web服务。不过很多Web应用的部署仍然青睐于它,因为它功能丰富,...

uWSGI 服务器的 uwsgi 协议究竟用在何处?

uWSGI 服务器的 uwsgi 协议究竟用在何处? uWSGI 与 python web framework(eg: django) 通信现在基本基于 wsgi 那么uWSGI 的自有协议...

CGI,FastCGI,SCGI,WSGI 差别

CGI = Common Gateway Interface 顾名思义,它是一种接口规范。该规范详细定义了Web服务器中运行的服务器代理程序,怎样获取及返回网页生成过程中,服务器环境上下文和HT...

uWSGI详解

WSGI是什么? WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语...
  • midion9
  • midion9
  • 2016年05月09日 17:49
  • 3103

TPL 和传统 .NET 异步编程一

TPL即任务并行库,是.NET Framework 4版本中的新鲜物,是System.Threading 和 System.Threading.Tasks 命名空间中的一组公共类型和 API。TPL ...

runAllManagedModulesForAllRequests="true" 的思考

最近在使用 MVC 开发的时候,遇到一个对我来说“奇怪的问题”,就是使用 BundleTable 进行 CSS、JS 文件绑定,然后使用 Styles.Render、Scripts.Render 进行...
  • nic7968
  • nic7968
  • 2015年07月19日 12:33
  • 4301

CGI、FastCGI、PHP-CGI和PHP-FPM 概念区分

CGI 简介 CGI全称是通用网关接口(Common Gateway Interface),是外部应用程序与与服务器之间的接口标准,是在CGI程序和web服务器之间传递信息的规程。 ...

CGI、FastCGI和php-fpm的概念和区别

在2000年或更早的时候,CGI比较盛行。那时,Perl是编写CGI的主流语言,以至于一般的CGI程序就是Perl程序。由于CGI程序的性能极其低下且安全性较差,现在基本没人使用。越来越多的人开始使用...

概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM

原文地址 CGI CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:区分wsgi、uWSGI、uwsgi、php-fpm、CGI、FastCGI的概念
举报原因:
原因补充:

(最多只允许输入30个字)