118

I am downloading PHP for Windows. I got 2 options on the website.

  1. PHP Thread Safe
  2. PHP Non-Thread Safe

Please answer the following questions:

  1. What is the difference between the two? What are the advantages and disadvantages over one another?
  2. I am developing an e-commerce website which will have heavy traffic, which one is more recommended and why?
4
  • 1
    possible duplicate of What is thread safe or non thread safe in PHP Commented Aug 26, 2011 at 12:46
  • 2
    What do you understand by "heavy traffic" and how can you be sure that you will get it? Commented Aug 26, 2011 at 12:59
  • @Crack- Heavy traffic means that many-many users will be using the website at a given time. Why can't I be sure of that?! Something wrong with it? Commented Aug 26, 2011 at 13:55
  • 1
    Only that "heavy traffic" can be defined in many ways, and what for some people is heavy traffic for some may be moderate or even light traffic. A useful metric here is page hits / day/hour/minute, any kind of objective measure. Commented Aug 26, 2011 at 20:24

3 Answers 3

124

From PHP documentation:

Thread Safety means that binary can work in a multithreaded webserver context, such as Apache 2 on Windows. Thread Safety works by creating a local storage copy in each thread, so that the data won't collide with another thread.

So what do I choose? If you choose to run PHP as a CGI binary, then you won't need thread safety, because the binary is invoked at each request. For multithreaded webservers, such as IIS5 and IIS6, you should use the threaded version of PHP.

So it really depends on the way that you want to use PHP:

  • Apache + LoadModule: Thread Safe
  • Apache + FastCGI: Non-Thread Safe
  • IIS: Thread Safe
  • IIS + FastCGI: Non-Thread Safe

PHP manual has nice installation instructions.

AFAIR running PHP with FastCGI is the preferable way, it performs faster and allows for more fine-grained security configuration.

Sign up to request clarification or add additional context in comments.

12 Comments

This page tell that: "If you are using PHP with IIS you should use the Non-Thread Safe (NTS) versions of PHP." compared to the answer telling: "IIS: Thread Safe"
Yes, and it mentions FastCGI. Thread Safe is for when using ISAPI (php5isapi.dll)
Why bother with non-thread-safe option at all? It's like: if I could choose between buying a safe car and a non-safe car, why would I ever choose the non-safe car? Does it perform better or something?
@SimonEast The NTS version has some overhead managing threads, that are already done by webserver, so performance will be degraded
@SimonEast Exactly. Its like doing a job two times, once in PHP and once in webserver
|
4

Quick and simple: If you are using Apache, edit your Apache24\conf\httpd.conf file and search for loadmodule. If you see your loadmodule is referencing a .dll something like:

LoadModule php7_module "e:/x64Stack/PHP/php7.1.9/php7apache2_4.dll" AddHandler application/x-httpd-php .php PHPIniDir "e:/x64Stack/PHP/php7.1.9" 

Then you want Thread Safety enabled or TS - Thread Safe version.

Else if you are using IIS or Apache with CGI, then NTS flavor.

I use multiple stacks and within those multiple servers and versions of PHP so don't let the paths / php or server versions throw you.

Comments

-2

In addition to Crack, since 5.4 you can use built-in web server (it works nice!).

Warning This web server was designed to aid application development. It may also be useful for testing purposes or for application demonstrations that are run in controlled environments. It is not intended to be a full-featured web server. It should not be used on a public network.

2 Comments

You need to add some sort of reference to what you are talking about. What built-in web server? How does this relate to ThreadSafe vs NotThreadSafe?
I think by the built-in web server, he means PHP's built-in webserver (php -S ip:port) – no idea about the relation to thread safety though.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.