Home > Backend Development > PHP Tutorial > How does the HTTP server implement support for PHP? _PHP Tutorial

How does the HTTP server implement support for PHP? _PHP Tutorial

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-07-13 10:33:03
Original
906 people have browsed it

Currently, there are three types of HTTP Server support for PHP:

  • Achieved through built-in modules of HTTP Server, such as Apache's mod_php5, similar Apache's built-in mod_perl can support perl;
  • Achieved through CGI, this is just like the previous CGI of perl. The disadvantage of this method is poor performance, because every time the server encounters these scripts, it needs to restart the script parser to execute the script and then return the results to the server. On the other hand, it is not very safe and is rarely used in this aspect.
  • The latest one is called FastCGI. The so-called FastCGI is an improvement on CGI. It generally uses a C/S structure. Generally, the script processor will start one or more daemon processes. Every time the HTTP Server encounters a script, it is directly delivered to the FastCGI process for execution, and then the result (usually html) Return to the browser.

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:

  • lighthttpd+spawn-fcgi
  • nginx+PHP-FPM (spawn-fcgi can also be used)

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.

Summary

At present, you can basically see three popular stacks in HTTPServer:

  • Apache+mod_php5
  • lighttp+spawn-fcgi
  • nginx+PHP-FPM

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/752557.htmlTechArticleThere are currently three types of HTTP Server support for PHP: implemented through the built-in module of the HTTP Server. For example, Apache's mod_php5, similar Apache's built-in mod_perl can be used for per...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Issues
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template