The Windows version of PHP from version 5.2.1 started with the thread safe (thread safe) and none thread safe (NTS, non-thread-safe) of the points, the difference is where? Which one should I use? Here is a simple introduction.
The first Windows version of PHP3.0.17, released on October 20, 2000, started with a thread-safe version, because unlike the Linux/unix system, which works in a multi-process manner, Windows systems work in a multi-threaded way. It is very slow to run PHP as CGI under IIS, because the CGI pattern is built on a multi-process basis, not multithreaded.
In general, we will configure PHP to run in ISAPI way, ISAPI is multi-threaded way, so much faster. There is a problem, however, that many commonly used PHP extensions are developed with Linux/unix's multi-process thinking, which can be faulted when running in ISAPI mode. Therefore, the CGI mode under IIS is the safest way to run PHP, but the CGI mode requires reloading and uninstalling the entire PHP environment for each HTTP request, which consumes a huge amount.
To take into account the efficiency and security of PHP under IIS, Microsoft has given the fastcgi solution. FASTCGI allows the PHP process to re-
Re-use instead of every new request to re-open a process. FastCGI can also allow several processes to execute simultaneously. This solves both
The problem that the CGI process pattern consumes too much, but also takes advantage of the CGI process pattern does not have the thread security problem.
Therefore, if you are using ISAPI to run PHP, you must use the thread safe version;
fastcgi mode to run PHP, there is no need to use thread security, with none thread safe (NTS, non-thread-safe)
Version to better improve efficiency.
PHP official http://php.net/on the Widows version has 4: VC9 x86 Non thread SAFE,VC9 x86 thread SAFE,VC6 x86 Non thread SAFE,VC6 x86 thread SAF e; So what's the difference?
This is a dependency on the runtime in Windows systems
PHP is developed in C language, so rely on VC library to run
Visual C + + 2003 Runtime Library (VC7) Visual C + + 2005 Runtime (VC8) Visual C + + 2008 Runtime Library (VC9) Visual C + + 2010 Runtime (VC10) Visual C + + 2012 runtime (VC11) Visual C + + 2013 Runtime Library (VC12)
Only the appropriate runtime is installed to run PHP, such as php5.5 requires VC11 installation
2. Different modes of operation
PHP has 2 running modes: ISAPI and fastcgi.
ISAPI execution mode is used in the form of DLL dynamic library, can be executed after the user request, after processing a user request will not disappear immediately, so the need for thread security check, so as to improve the execution efficiency of the program, so if it is to execute PHP with ISAPI, it is recommended to choose thread Safe version;
The fastcgi execution is performed with a single thread, so there is no need for thread security checks, and the removal of thread safety checks can improve execution efficiency, so if PHP is executed in fastcgi, it is recommended to choose the non thread safe version.
For Apache servers, the ISAPI mode is generally chosen, and for Nginx server, the fastcgi mode is chosen.
The thread safe (thread safe) and none thread safe (NTS, non-thread safe)