CGI CGI全称是“年夜 众 网关接口”(Common Gateway Interface),HTTP效劳 器与你的年夜 概 别的呆板上的步调举行“交谈”的一种东西 ,其步调须运行 正在 网络效劳 器上。 CGI可以用任何一种言语 编写,只需 这种言语 具有标准输入 、输入 和 环境变量。如php,perl,tcl等。 FastCGI FastCGI像是一个常驻(long-live)型的CGI,它可以没有 停实验着,只需 激活后,没有 会每一 次都要淹灭工夫 去fork一次(这是CGI最为人诟病的fork-and-execute 情势 )。它还撑持 散布 式的运算,即 FastCGI 步调可以正在 网站效劳 器以外的主机上实验而且继承来自别的网站效劳 器来的乞求 。 FastCGI是言语 有关 的、可伸缩架构的CGI开放扩展,其重要活动是将CGI表明器进程坚持 正在 内存中并因此 得 到较高的功能 。尽人皆知 ,CGI表明器的重复 加载是CGI功能 低下的重要原因 ,假如CGI表明器坚持 正在 内存中并继承FastCGI进程办理 器调治,则可以供给 精良的功能 、伸缩性、Fail- Over特性 等等。 FastCGI特征 FastCGI具有言语 有关 性. FastCGI正在 进程中的使用 步调,独立于焦点web效劳 器运行 ,供给 了一个比API更安全 的环境。APIs把使用 步调的代码与焦点的web效劳 器链接正在 一起 ,这意味 着正在 一个错误的API的使用 步调年夜 概会破坏其余 使用 步调年夜 概 焦点效劳 器。 歹意 的API的使用 步调代码乃至可以盗取 另一 个使用 步调年夜 概 焦点效劳 器的密钥。 FastCGI技能现在撑持 言语 有:C/C++、Java、Perl、Tcl、Python、SmallTalk、Ruby等。干系模块正在 Apache, ISS, Lighttpd等风行 的效劳 器上也是可用的。 FastCGI的没有 依赖于任何Web效劳 器的外部 架构,因此 纵然效劳 器技能的厘革, FastCGI仍旧 稳固没有 变。 FastCGI的使命 道理 Web Server启动时载入FastCGI进程办理 器(IIS ISAPI年夜 概 Apache Module) 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正在 此便加入 了。 正在 上述环境中,你可以想象CGI但凡 有多慢。每一 一个 Web乞求 PHP都必须 从头 剖析 php.ini、从头 载入全副 扩展偏重 初始化全副 数据结构。使用FastCGI,全副 这些都只正在 进程启动时发作 一次。一个额外 的利益是,连续数据库毗连(Persistent database connection)可以使命 。 FastCGI的没有 足 由于是多进程,以是比CGI多线程斲丧更多的效劳 器内存,PHP-CGI表明器每一 进程斲丧7至25兆内存,将这个数字乘以50年夜 概 100就是很年夜 的内存数。 Nginx 0.8.46+PHP 5.2.14(FastCGI)效劳 器正在 3万并发毗连下,开启的10个Nginx进程斲丧150M内存(15M*10=150M),开启的64个php-cgi进程斲丧1280M内存(20M*64=1280M),加上体系自己 斲丧的内存,统共斲丧没有 到2GB内存。假如效劳 器内存较小,彻底 可以只开启25个php-cgi进程,多么 php-cgi斲丧的总内存数才500M。 上面 的数据摘自Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建赛过Apache十倍的Web效劳 器(第6版) PHP-CGI PHP-CGI是PHP自带的FastCGI办理 器。 PHP-CGI的没有 足: php-cgi变动php.ini设置后需重启php-cgi才气让新的php-ini见效,没有 成 以滑润圆滑 重启。 直接杀逝世 php-cgi进程,php就没有 能 运行 了。(PHP-FPM和 Spawn-FCGI就没有 这个题目,保卫进程会滑润圆滑 从更生 成新的子进程。) PHP-FPM PHP-FPM是一个PHP FastCGI办理 器,是只用于PHP的,可以正在 http://php-fpm.org/download下载得 到 。 PHP-FPM实际上是 PHP源代码的一个补钉 ,旨正在 将FastCGI进程办理 整合进PHP包中。必须 将它patch到你的PHP源代码中,正在 编译安装 PHP后才可以使 用。 如今我们 可以正在 最新的PHP 5.3.2的源码树里下载得 到 直接整合了PHP-FPM的分支,听说下个版本会融会 进PHP的主分支去。相对 于 Spawn-FCGI,PHP-FPM正在 CPU和 内存方面的操纵 都更胜一筹,而且 前者很轻易崩溃 ,必须 用crontab举行监控,而PHP-FPM则没有 这种烦恼 。 PHP5.3.3曾经 经集成php-fpm了,没有 再 是第三方的包了。PHP-FPM供给 了更好的PHP进程办理 体式格局 ,可以有效操纵 内存和 进程、可以滑润圆滑 重载PHP设置,比spawn-fcgi具有更多有点,以是被PHP官方收录了。正在 ./configure的时间带 –enable-fpm参数便可 开启PHP-FPM。 Spawn-FCGI Spawn-FCGI是一个通用的FastCGI办理 效劳 器,它是lighttpd中的一部分 ,许多人都用Lighttpd的Spawn-FCGI举行FastCGI情势 下的办理 使命 ,没有 外有没有 少缺陷 。而PHP-FPM的出现 几 缓解了一些题目,但PHP-FPM有个缺陷 就是要从头 编译,这关于 于一些曾经 经运行 的环境年夜 概有没有 小的风险(refer),正在 php 5.3.3中可以直接使用PHP-FPM了。 Spawn-FCGI现在曾经 经独成为一个款式 ,更加 稳固一些,也给许多Web 站点的设置带来便利 。曾经 经有没有 少站点将它与nginx搭配来办理 静态 网页。 最新的lighttpd也没有 包含 这一块了(http://www.lighttpd.net/search?q=Spawn-FCGI),但可以正在 从前版本中找到它。正在 lighttpd-1.4.15版本中就包含 了(http://www.lighttpd.net/download/lighttpd-1.4.15.tar.gz),现在Spawn-FCGI的下载所在是http://redmine.lighttpd.net/projects/spawn-fcgi,最新版本是http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz。 注:最新的Spawn-FCGI可以到lighttpd.net网站搜索“Spawn-FCGI”找到它的最新版本公布 所在。 PHP-FPM与spawn-CGI比照 PHP-FPM的使用十分 便利 ,设置都是正在 PHP-FPM.ini的文件内,而启动、重启都可以从php/sbin/PHP-FPM中举行。更便利 的是改正 php.ini后可以直接使用PHP-FPM reload举行加载,无需杀失落 进程便可 以实现 php.ini的改正 加载 效果表现使用PHP-FPM可以使 php有没有 小的功能 提拔。PHP-FPM操纵 的进程cpu接纳的速率比力慢,内存分拨 的很匀称。 Spawn-FCGI操纵 的进程CPU降落的很快,而内存分拨 的比力没有 匀称。有许多进程似乎未分拨 到,而别的 一些却占用很高。年夜 概是由于进程使命分拨 的没有 匀称招致 的。而这也招致 了总体相应速率的降落。而PHP-FPM公道 的分拨 ,招致 总体相应的提到和 使命的匀称。 来源:https://www.jianshu.com/p/e123db874179 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |