`
xl515331
  • 浏览: 73435 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

(转) 网站性能-cgi fastcgi mod_php相关概念整理

    博客分类:
  • Web
阅读更多

原文在这里

 

CGI英文全称是 Common Gateway Interface,通常翻译为共同网关接口,是HTTP服务器与机器上的其他程序进行通信的一个接口。这个“其他程序”可以使用任何计算机语言来编写, 它通过CGI这个接口从HTTP服务器取得输入,然后把运行的结果又通过CGI这个接口交给HTTP服务器,而HTTP服务器把这个结果送给浏览器。

从上面看,CGI所要实现的不过是动态网页而已,这种处理方式的特点就是每接到一个请求,web server都要fork出一个单独的cgi程序的进程来处理,这种方式的好处是把web server和具体的程序处理独立开来,结构清晰,可控性强,同时缺点就是如果在高访问需求的情况下,cgi的进程fork就会成为很大的服务器负担,想 象一下数百个并发请求导致服务器fork出数百个进程就明白了。这也是为什么cgi一直背负性能低下,高资源消耗的恶名的原因。

相应的有问题就有解决方案,目前流行的方案就是使用模块设计,基本上目前的web server都有相应的模块机制来扩充它的功能,只要按照其设计规范设计出来的模块,就能插入到web server自身的进程处理,因此性能有很大改观,例如IIS的isapi,apache的dso。     mod_php就是把PHP做为APACHE一个内置模块。让apache http服务器本身能够支持PHP语言,不需要每一个请求就启动PHP解释器来解释PHP。 但是,这种方法也不是没有缺点的,例如对于不同的web server,要按照不同标准开发,无法做到webserver无关性;例如这将输入验证的工作转交给了web server,没办法自由处理;例如一旦出现问题将影响整个web server处理流程;例如插入web server进程导致的无法以多用户标示运行,无法处理虚拟主机权限等。

 



所幸我们还有另外的选择,这就是fastcgi。fastcgi是基于cgi架构的扩展,他的核心思想就是在web server和具体cgi程序之间建立一个智能的可持续的中间层,统管cgi程序的运行,这样web server只需要将请求提交给这个层,这个层再派生出几个可复用的cgi程序实例,然后再把请求分发给这些实例,这些实例是可控的,可持续,可复用的, 因此一方面避免了进程反复fork,另一方面又可以通过中间层的控制和探测机制来监视这些实例的运行情况,根据不同的状况fork或者回收实例,达到灵活 性和稳定性兼得的目的。

   百度百科关于FastCGI

       1. FastCGI 像是一个常驻 (long-live) 型的 CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一次 (这是 CGI 最为人诟病的 fork-and-execute 模式)。
  2. FastCGI 可在任何平台上使用,Netscape Enterprise 及 IIS 都有 FastCGI 的模块可供使用,阿帕契 (Apache,以及利用 Apache 衍生出做的服务器) 上也有 mod_fastcgi 可用。
  3. FastCGI 支持 C/C++,Ruby, PHP, Perl,Tcl,Java,Python 等程序语言。
  4. FastCGI 的应用程序亦兼容于 CGI。即 FastCGI 的应用程序也可以当成 CGI 来执行。
  5. 现有的 CGI 程序要改写成 FastCGI 非常简单,最少可能只需要多加入三行程序代码。
  6. FastCGI 的侦错方式与 CGI 大同小异,只要带入程序所需的环境变量及参数,即可在命令列模式执行或侦错。
  7. FastCGI 应用程序的写作方式与 CGI 类似,除了几项原则要特别注意外,FastCGI 的写作方式跟 CGI 几乎一样,与学习 Web Server API 比较起来, FastCGI 简单多了。
  8. FastCGI 支授分布式运算 (distributed computing),即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

 

 

----------------- EOF ----------------------

分享到:
评论

相关推荐

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

    ### mod_php和mod_fastcgi及php-fpm的详细介绍与对比 #### 一、概念解析 **mod_php** 和 **mod_fastcgi** 是两种常见的用于在Apache Web服务器中部署PHP应用程序的方法,而 **php-fpm** (PHP FastCGI Process ...

    cgi.rar_c cgi_cgi_cgi-web_cgi-webserver_网页 cgi

    后来出现了FastCGI、CGI的模块化版本如mod_perl(Apache与Perl的结合)和PHP-FPM(PHP FastCGI进程管理器),它们提高了性能并降低了资源消耗。 8. 文件“cgi.doc”可能包含的细节:这份文档可能详细介绍了如何使用...

    cgi-test-test.rar_c cgi_c++ cgi_cgi_cgi c++_cgi-test.c

    9. **优化与扩展**:现代Web开发中,为了提高效率和可维护性,CGI已经被FastCGI、mod_php、ASP.NET等更高效的技术所取代。不过,理解CGI的工作原理对于学习这些技术仍然很有帮助。 总之,这个压缩包提供了一个基础...

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

    为了评估 mod_php、mod_fastcgi 和 PHP-FPM 的性能,通常会进行一系列的基准测试,包括响应时间、吞吐量等指标。测试内容可能包括不同的并发用户数、请求类型、服务器配置等。测试结果显示,通常情况下,PHP-FPM ...

    mod-fastcgi-2.4.6 for apache2.40

    mod_fastcgi-2.4.6是一个适用于Apache 2.40及更高版本的FastCGI模块,它的使用可以显著提升服务器处理动态内容的能力,特别是在高流量网站中。通过正确安装和配置,你可以利用这个模块实现更高效、更稳定的Web服务。

    mod_fcgid-2.3.10-win32-VS16_javascript_socket_MOD_

    fcgid-2.3.10-win32-VS16_javascript_socket_MOD_"提及的是一个特定版本的Apache模块mod_fcgid的Windows 32位构建,该版本是使用Visual Studio 16(可能是VS2019)编译的,并且与JavaScript Socket编程有关。...

    [好文]mod_php和mod_fastcgi和php-fpm的介绍,对比,和性能数据.pdf

    结果显示,FastCGI模式下的PHP性能优于mod_php,尤其是在大型网站和高负载环境下。 FASTCGI配置项对性能的影响主要体现在进程数量、缓冲区大小、超时设置等方面。例如,增加进程数量可以提高并行处理能力,但过多的...

    mod_fcgid-2.3.6-win32-x86.zip

    综上所述,这个zip文件提供了在Windows上的Apache服务器上启用FastCGI支持所需的所有组件,包括mod_fcgid模块的二进制文件和相关的配置、许可及说明文档。配置Apache以使用mod_fcgid涉及编辑httpd.conf文件,添加或...

    zeal离线文档-Apache_HTTP_Server.docset

    8. **CGI与FastCGI**:支持执行CGI脚本,与PHP、Python、Perl等动态语言集成,构建动态网站。 9. **MIME类型支持**:通过定义不同类型的文件扩展名,Apache能正确处理各种类型的文件,如HTML、图像、视频等。 10. ...

    Apache2.4 Win64位

    FcgidWrapper "F:/web/server/PHP/php-cgi.exe" .php 备注: apache No input filespecified,今天是我们配置apache RewriteRule时出现这种问题,解决办法很简单如下 打开.htaccess 在RewriteRule 后面的index....

    mod_fcgid-2.3.9.tar.gz

    Apache mod_fcgid 是一个非常重要的模块,它允许Apache HTTP Server与FastCGI应用程序进行通信,从而提升服务器性能和响应速度。FastCGI是一种常驻型的CGI(Common Gateway Interface)实现,它解决了传统CGI模式下...

    CGI.rar_boa_boa cgi_cgi_cgi boa_cgi动态网页

    CGI虽然在性能上不如现代的服务器端技术如FastCGI、mod_php或WSGI,但它仍然在一些简单应用和老系统中得到使用。理解CGI的工作原理以及如何在BOA这样的轻量级服务器上配置和运行CGI程序,对于维护旧系统或者学习Web...

    mod_fcgid-2.3.9

    FastCGI是一种让动态内容在Web服务器上高效运行的方式,它能长时间运行,不像CGI那样每次请求都需要启动新的进程,从而提高了性能。`mod_fcgid`在Apache中的作用类似于`mod_php`或`mod_perl`,但它是为运行任意...

    apache_2.2.8-win32-x86-no_ssl.msi

    6. **兼容性**:Apache与多种编程语言(如PHP、Perl、Python、Java等)和数据库(如MySQL、PostgreSQL)良好集成,支持CGI脚本和FastCGI,使得它成为动态网站的理想选择。 7. **错误日志和访问日志**:Apache记录...

    cgi.rar_cgi_cgi c++_cgi-web

    因此,后来出现了像FastCGI、mod_perl、PHP-FPM等技术,它们在CGI的基础上进行了优化,提高了处理效率和资源利用率。 在实际应用中,"cgi-web"可能指的是使用CGI技术构建的Web应用程序,这些程序可以实现各种功能,...

    cgi.rar_cgi_cgi common gate_cgi html

    为了解决CGI的性能和安全问题,后来出现了FastCGI、mod_perl、PHP-FPM等技术,它们可以保持CGI进程常驻内存,减少启动和关闭进程的时间,同时提供更高级的安全措施。 在"cgi教程.chm"这个文件中,你可以学习到关于...

    apach-2.2.15-win32-x86-no_ssl.zip

    10. **FastCGI和CGI支持**:Apache可以与FastCGI和CGI脚本配合使用,以支持多种后端语言如Perl、Python和PHP。 由于Apache 2.2.15已经较为老旧,可能存在安全漏洞,因此在生产环境中使用时应谨慎考虑。对于新项目或...

    CGI.rar_Linux cgi_Théa_appweb

    为了优化,可以考虑使用FastCGI或CGI的替代技术,如PHP-FPM或mod_php,它们能持久化进程,提高响应速度。 **学习资源** 对于初学者来说,理解Linux环境下的CGI编程是一项挑战,但也是提升Web开发技能的重要步骤。...

    cgi.rar_CGI 嵌入式_cgi web_web cgi_嵌入式 CGI_web

    然而,随着技术的发展,FastCGI、mod_perl、PHP-FPM等更高效的技术逐渐取代了传统的CGI,它们能够减少每次请求的启动时间,提高性能。同时,考虑到安全性,使用预加载的CGI进程池比直接执行CGI程序更加推荐。 总的...

    apache-fastcgi

    FastCGI是Fast Common Gateway Interface的缩写,它是一种常驻型的CGI,旨在解决CGI接口的性能问题。传统CGI每次处理请求时都会启动新的进程,而FastCGI则保持一个进程池来处理多个请求,从而提高了效率。 **Apache...

Global site tag (gtag.js) - Google Analytics