Currently, there are three types of HTTP Server support for PHP:
A small problem with this method of FastCGI is that when encountering frequent requests with large traffic, the daemon process of the script processor may be overloaded and become very slow, or even cause a memory leak. However, the advantage compared to Apache's built-in module method is that the server and script parser are completely separated and responsible for their own responsibilities, so the server is no longer bloated and can concentrate on responding to static files or returning the results of the dynamic script parser to the user client. end. Therefore, compared with Apache's built-in module method, sometimes the performance is much improved. Some people have tested that it may be 5 to 10 times faster than Apache+mod_php.
There are two common stacks using FastCGI:
As mentioned above, both structures use FastCGI to support PHP, so the HTTP Server is completely freed for better response and concurrent processing. Therefore, both lighttpd and nginx have the reputation of being small, but powerful and efficient.
The two can also be divided into good and bad. Since spawn-fcgi is part of lighttpd, if lighttpd is installed, spawn-fcgi will generally be used to support PHP. However, some users currently say that spwan-fcgi of lighttpd is not During high concurrent access, the memory leak mentioned above will occur and even fastcgi will be automatically restarted. That is: the PHP script processor crashes. If the user accesses it at this time, a white page may appear (that is, PHP cannot be parsed or an error occurs).
Nginx does not include fastcgi (spawn-fcgi) like lighttpd itself, so it is completely lightweight and requires the help of a third-party FastCGI processor to parse PHP. Therefore, it seems that nginx is very Flexible, it can be connected to any third-party parsing processor to implement PHP parsing (it is easy to set up in nginx.conf).
nginx can use spwan-fcgi (lighttpd needs to be installed together, but the port needs to be avoided for nginx. Some older blogs have tutorials on this installation), but because spawn-fcgi has the above-mentioned problems that users gradually discovered Defect, now the use of nginx+spawn-fcgi combination is gradually reduced.
Due to the defects of spawn-fcgi, there is now a new third-party (currently still, I heard that they are working hard to add it to PHP core in the near future) FastCGI processor for PHP called PHP-FPM (you can google it for details). Compared with spawn-fcgi, it has the following advantages:
Since it is developed as a PHP patch, it needs to be compiled together with the PHP source code during installation, which means it is compiled into PHP core, so it is better in terms of performance. At the same time, it is also better than spawn-fcgi in handling high concurrency, at least it will not automatically restart the fastcgi processor. The specific algorithms and designs used can be found on Google.
Therefore, as mentioned above, due to the lightweight and flexibility of nginx, its current performance is superior, and more and more people are gradually using this combination: nginx+PHP/PHP-FPM.
At present, you can basically see three popular stacks in HTTPServer: