https://help.superhosting.bg/en/cgi-common-gateway-interface-fastcgi.html
First, the two protocols:
- CGI scripts is a way how to run a server side script when a HTTP request comes; this has nothing to do with PHP
- FastCGI is a "better CGI" - CGI is known to be slow, Fast CGI is a different approach with much faster results; this has also nothing to do with PHP.
Now the PHP related things:
- mod_php is running a PHP as Apache module - that is PHP request is run under Apache process with everything that goes with it - Apache processes are defined by Apache configuration, PHP is run with Apache permission etc.
- PHP-FPM is PHP's FastCGI implementation; PHP-FPM runs as a standalone FastCGI server and Apache connects to the server using Apache's module, usually mod_fcgid or mod_fastcgi; I personally think this is much better than running as mod_php, but it depends on your requirements and is also a little more complex; in this configuration, permission, processes related stuff & everything is run under PHP configuration, PHP user etc. & Apache connects to PHP as to a server; in this configuration it is also possible to have pool of PHP servers and to have PHP server on physically different machine than Apache. They say this is almost as fast as using Apache's module and there are benefits of better control over PHP configuration.
- SuPHP - this was mostly used to address some problems of mod_php related to permissions; with mod_php PHP scripts are run under the Apache user/group; mod_suphp can run the scripts in different user; I never used it, PHP-FPM now should be much better choice
So, basically:
- CGI, Fast-CGI are protocols; CGI is slow, Fast-CGI is much faster
- mod_php (with underscore) and PHP-FPM are two basic ways how to run PHP
- mod_SuPHP is similar to mod_php but can change the user/group that the process runs under
Nhận xét