欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
FastCGI
第58行: | 第58行: | ||
相关信息: http://wiki.rubyonrails.com/rails/pages/FastCGI | 相关信息: http://wiki.rubyonrails.com/rails/pages/FastCGI | ||
+ | |||
+ | ==Framework== | ||
+ | *[[FastCGI Application Framework]] |
2007年1月26日 (五) 00:00的版本
目录 |
FastCGI的技术原理
如果想了解FastCGI的技术原理就要了解何为"短生存期应用程序",何为"长生存期应用程序"。
先从CGI技术开刀,以下是CGI技术的理论:每次当客户请求一个CGI的时候,Web服务器就请求操作系统生成一个新的CGI进程。当CGI满足要求后,服务器就杀死这个进程。服务器对客户端的每个请求都要重复这样的过程。 而FastCGI技术的理论为:FastCGI程序一旦产生后,他可以持续工作,足够满足客户的请求直到被明确的终止。如果你希望通过协同处理来提高程序的性能,你可以请求Web服务器运行多个FastCGI 应用程序的副本。
CGI就是所谓的短生存期应用程序,FastCGI就是所谓的长生存期应用程序。
由于FastCGI程序并不需要不断的产生新进程,可以大大降低服务器的压力。并且产生较高的应用效率。
自今,较为流行的Java语言Servlet技术在设计上是以参考FastCGI的技术运行所设计。
FastCGI的特点
1. 打破传统页面处理技术
传统的页面处理技术,程序必须与Web服务器或Application服务器处于同一台服务器中。这种历史已经早N年被FastCGI技术所打破, FastCGI技术的应用程序可以被安装在服务器群中的任何一台服务器,而通过TCP/IP协议与Web服务器通讯,这样做既适合开发大型分布式Web 群,也适合高效数据库控制。
2. 明确的请求模式
CGI技术没有一个明确的角色,在FastCGI程序中,程序被赋予明确的角色(响应器角色、认证器角色、过滤器角色)。
3. 合理的程序结构
起初,真的很讨厌FastCGI应用程序的结构要求。没关系,您经过一段时间编写后就会喜欢这种结构,只有这种完全规范的结构才能让您的程序更有效率。
Using FastCGI with Rails
$ /etc/init.d/httpd stop $ sudo apt-get install libfcgi-dev $ sudo gem install fcgi
FreeBSD user
$ sudo gem install fcgi -- --with-fcgi-include=/usr/local/include --with-fcgi-lib=/usr/local/lib
apache httpd. conf
LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so <IfModule mod_fastcgi.c> FastCgiIpcDir /tmp/fcgi_ipc/ AddHandler fastcgi-script .fcgi </IfModule>
Gentoo users
emerge fcgi ruby-fcgi mod_fastcgi
$ apache2ctl reload
public/dispatch.fcgi
charge require 'fcgi' to require 'rubygems' require_gem 'fcgi' $ sudo gem update
public/.htaccess
charge RewriteRule ^(.*)$ /dispatch.cgi?$1 [QSA,L] to RewriteRule ^(.*)$ /dispatch.fcgi?$1 [QSA,L]
相关信息: http://wiki.rubyonrails.com/rails/pages/FastCGI