- CGI, Common Gateway Interface, is a tool for HTTP Server-to-contact with programs in other servers, which can used into any languages with standard input, standard output and environmental variables, such as PHP, Perl, or TCL.
- FastCGI is a kind of the CGI which is long-live, which'll always be running. With FastCGI, it's ll take less time T fork(which is a problem of Fork-and-execute mode in CGI). In additional, FastCGI also supports for distributed computing.
it is Also, which are an opened Extension of CGI, which is used to keep CGI running in the memory. It's well-known That loading of CGI have been the main reason of low performance .
the main process of running FastCGI:
- Loading the Process Manager of FastCGI when a WEB server has booted (IIS ISAPI or Apache Module)
- the Process Manager of FastCGI would initiate itself to create several CGI processes, which is used to wait for Connec tion of WEB servers.
- when requests from clients has reached the WEB server, the Process Manager of FastCGI would select a CGI set up before To connect, whose environmental variables and standard input would be a sent to the sub process
php-cgi &NB Sp;of FastCGI.
- this Sub process would return standard output and error info to the WEB server with the SA Me connection . Requests is finished when it closes the connection.
- Therefore, FastCGI only set once for parsing
php.ini , loading extensions and initiating all the data structures.
- Because of multi-processes, FastCGI would cost more memory than CGI, whose each process (php-cgi) would cost about 7 Mb to 25Mb memory.
- Data from the Article:nginx 0.8x + PHP 5.2.13 (FastCGI) is the Times better than Apache (Edition 6)
- When 30k connection happens in parallel, Nginx processes would only cost 150Mb Mem (15Mb ), and php-cgi would onl Y cost is about 1280Mb (20Mb 64).
- PHP-CGI is one kind of the Process Manager of FastCGI, which is within PHP itself.
- The command to boot is as follow:
php-cgi -b 127.0.0.1:9000
- After changing
php.ini , you should reboot php-cgi the new work
- When a php-cgi process was killed, all the PHP code would cannot run. (PHP-FPM and spawn-fcgi do not have the same problem)
PHP-FPM (fast-cgi Process Manager)
- PHP-FPM is another kind of the Process Manager of FastCGI, which can be downloaded here.
- It's actually a patch for PHP, which are used to integrate the Process Manager of FastCGI into PHP, which should b e make into PHP before version 5.3.2 (5.3.2 has been integrated in PHP later).
- PHP-FPM can used to control sub processes of php-cgi:
/usr/local/php/sbin/php-fpm [options]# options# --start: start a fastcgi process of php# --stop: force to kill a fastcgi process of php# --quit: smooth to kill a fastcgi process of php# --restart: restart a fastcgi process of php# --reload: smooth to reload php.ini# --logrotate: enable log files again
- SPAWN-FCGI is a general kind of the Process Manager of FastCGI, which are one part of LIGHTTPD.