|
FastCGI is a protocol for interfacing interactive programs with a web server. FastCGI is a variation on the earlier Common Gateway Interface (CGI); FastCGI's main aim is to reduce the overhead associated with interfacing the web server and CGI programs, allowing a website to scale up to handle more concurrent requests. For other senses of this word, see protocol. ...
Wikimedia servers architecture The term Web server can mean one of two things: A computer that is responsible for accepting HTTP requests from clients, which are known as Web browsers, and serving them HTTP responses along with optional data contents, which usually are Web pages such as HTML documents and...
The Common Gateway Interface (CGI) is a standard protocol for interfacing external application software with an information server, commonly a web server. ...
The Common Gateway Interface (CGI) is a standard protocol for interfacing external application software with an information server, commonly a web server. ...
History
CGI is a protocol for interfacing external applications to web servers. CGI applications run in a separate process, which is created at the start of each request and torn down at the end. This "one process per request" model makes CGI programs very simple to implement, but limits efficiency and scalability. At high loads, the operating system process creation and destruction overhead becomes significant and limits scalability. In addition, the CGI process model limits resource reuse techniques (such as reusing database connections, in-memory caching, etc.). This article or section does not cite its references or sources. ...
To address the scalability shortcomings of CGI, Open Market developed FastCGI and first introduced it in their webserver product in the mid-1990s. Open Market originally developed FastCGI in part as a competitive response to Netscape's proprietary, in-process API (NSAPI) for developing Web applications. Open Market was an ecommerce startup, founded in Cambridge, Massachusetts in early 1994. ...
Netscape Communications Corporation (commonly known as Netscape), was an American computer services company, best known for its web browser. ...
Implementation details Instead of creating a new process for every request, FastCGI can use a single persistent process which handles many requests over its lifetime. Processing of multiple requests simultaneously is achieved either by using a single connection with internal multiplexing (ie. multiple requests over a single connection) and/or by using multiple connections. Many such processes can exist, something that can increase stability and scalability. FastCGI also allows programs to get the web server to do certain simple operations, like reading in a file, before the request is handed over. Environment information and page requests are sent from the web server to the process over a TCP connection (for remote processes) or Unix domain sockets (for local processes). Responses are returned from the process to the web server over the same connection. The connection may be closed at the end of a response, but the web server and the process are left standing. Environment variables are a set of dynamic values that can affect the way running processes will behave on a computer. ...
The Transport Control Protocol (TCP) is one of the core protocols of the Internet protocol suite. ...
A socket generally designates a cavity or region used for fitting and connecting some specific device. ...
Although initially developed by Open Market, FastCGI was implemented by a number of other webserver makers. The FastCGI approach, however, competed against other techniques which also aimed to speed and simplify server-subprogram communications, but which didn't follow the CGI paradigm. Apache modules such as mod_perl and mod_php appeared around the same time and seemed to be even better replacements for CGI, allowing closer integration with the core webserver. Open Market was an ecommerce startup, founded in Cambridge, Massachusetts in early 1994. ...
Apache HTTP Server is a free software/open source web server for Unix-like systems, Microsoft Windows, Novell NetWare and other operating systems. ...
mod_perl is an optional module for the Apache web server. ...
For the PHP Cold War history project, see Parallel History Project. ...
FastCGI languished for many years; however, later years have seen a resurgence in interest[citation needed]. Many web site administrators and programmers are finding that the separation of web applications from the web server in FastCGI (and the simpler SCGI) has many desirable advantages over embedded interpreters (mod_perl, mod_php, etc.). This separation allows server and application processes to be restarted independently — an important consideration for busy web sites. It also facilitates per-application security policies — important for ISPs and web hosting companies. Simple Common Gateway Interface (SCGI) protocol is a replacement for the CGI protocol. ...
mod_perl is an optional module for the Apache web server. ...
For the PHP Cold War history project, see Parallel History Project. ...
Web Servers that implement FastCGI - Note: unless stated, completeness of FastCGI implementation is unknown
- - Implemented by either of the third-party modules mod_fastcgi (now stagnant) or mod_fcgid
- - Multiplexing of requests through a single connection is prohibited by Apache's design, so this isn't supported
- - Loadbalancing FastCGI support
- - Supports chrooted FastCGI servers
- - Multiplexing of requests through a single connection is not implemented
Hello Abyss Web Server is distributed as two different forms: X1 and X2. ...
Apache HTTP Server is a free software/open source web server for Unix-like systems, Microsoft Windows, Novell NetWare and other operating systems. ...
Cherokee HTTP Server is a free software HTTP web server for Unix-like systems (BSD, Linux, and UNIX systems), and other platforms. ...
To meet Wikipedias quality standards, this article may require cleanup. ...
lighttpd is a web server which is designed to be secure, fast, standards-compliant, and flexible while being optimized for speed-critical environments. ...
IIS (Microsoft Internet Information Services or Server) is a set of Internet based services for Windows machines. ...
Open Market was an ecommerce startup, founded in Cambridge, Massachusetts in early 1994. ...
Roxen is a free software web server produced by Roxen Internet Software, a company based in Linköping, Sweden and named after the nearby lake Roxen. ...
Sun Java⢠System Web Server (formerly Sun ONE Web Server, before that iPlanet Web Server, and before that Netscape Enterprise Server) is a web server designed for medium and large business applications. ...
Kerio WebSTAR (formerly 4D WebSTAR) is a HTTP web server for Mac OS X. External links WebSTAR home Categories: | ...
Zeus Web Server is a high-performance web server for Unix and Unix-like platforms. ...
Language bindings for the FastCGI API FastCGI can be implemented in any language that supports sockets. APIs exist for: A application programming interface (API) is the interface that a computer system, library or application provides in order to allow requests for services to be made of it by other computer programs, and/or to allow data to be exchanged between them. ...
FastCGI has enabled web application portability; in contrast, applications developed for embedded interpreters (such as mod_python) are often tightly bound to the Apache API. Recent frameworks such as Ruby on Rails, Catalyst, and Django allow use with either the embedded interpreters (mod_ruby, mod_perl, or mod_python respectively) or with FastCGI. C is a general-purpose, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. ...
C++ (pronounced see plus plus, IPA: ) is a general-purpose, high-level programming language with low-level facilities. ...
Common Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, standardised by ANSI X3. ...
CLISP is a Common Lisp implementation. ...
CMUCL is a free Common Lisp implementation, originally developed at Carnegie Mellon University. ...
It has been suggested that this article or section be merged with GNU_Guile. ...
Java is an object-oriented programming language developed by Sun Microsystems in the early 1990s. ...
Objective Caml (OCaml) is a general-purpose programming language descended from the ML family, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996. ...
Perl is a dynamic programming language created by Larry Wall and first released in 1987. ...
PHP (PHP: Hypertext Preprocessor) is a reflective programming language originally designed for producing dynamic Web pages. ...
Python is a programming language created by Guido van Rossum in 1990. ...
Ruby is a reflective, dynamic, object-oriented programming language. ...
Tcl (originally from Tool Command Language, but nonetheless conventionally rendered as Tcl rather than TCL; and pronounced like tickle) is a scripting language created by John Ousterhout. ...
SmartEiffel is a free Eiffel compiler. ...
Smalltalk is an object-oriented, dynamically typed, reflective programming language. ...
HP BASIC for OpenVMS is the latest name for a dialect of the BASIC programming language created by Digital Equipment Corporation and now owned by Hewlett-Packard. ...
mod_python is an Apache HTTP Server module that integrates the Python programming language into the Apache server. ...
A application programming interface (API) is the interface that a computer system, library or application provides in order to allow requests for services to be made of it by other computer programs, and/or to allow data to be exchanged between them. ...
Ruby on Rails is a web application framework released in 2004 that aims to increase the speed and ease of web development. ...
Catalyst is an open source Web application framework written in Perl, supporting the MVC pattern, as well as a number of experimental web patterns. ...
Django is an open source web application framework, written in Python, which loosely follows the model-view-controller design pattern. ...
mod_ruby is a embedded Ruby interpreter of the Apache web server to allow Ruby code executing natively and faster than other CGI methods. ...
mod_perl is an optional module for the Apache web server. ...
mod_python is an Apache HTTP Server module that integrates the Python programming language into the Apache server. ...
References - ^ FastCGI for Cherokee
- ^ FastCGI HOWTO for Hiawatha
- ^ FastCGI for Lighttpd
- ^ FastCGI for IIS (technical preview 2)
External links |