PHP Thread Safe e Non-Thread Safe para Windows

88

Estou baixando PHP para Windows. Tenho 2 opções no site.

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

Por favor responda as seguintes questões:

  1. Qual é a diferença entre os dois? Quais são as vantagens e desvantagens um do outro?
  2. Estou desenvolvendo um site de e-commerce que terá muito tráfego, qual é o mais recomendado e por quê?
cume
fonte
1
possível duplicata de What is thread safe or non thread safe in PHP
Shef
1
O que você entende por "tráfego intenso" e como pode ter certeza de que o conseguirá?
Crack
@ Crack- Tráfego intenso significa que muitos usuários estarão usando o site em um determinado momento. Por que não posso ter certeza disso ?! Algo errado com isso?
sumit
Só que "tráfego pesado" pode ser definido de várias maneiras, e o que para algumas pessoas é tráfego pesado para outras pode ser moderado ou até leve. Uma métrica útil aqui são acessos de página / dia / hora / minuto, qualquer tipo de medida objetiva.
Crack

Respostas:

92

Da documentação do PHP:

Thread Safety significa que o binário pode funcionar em um contexto de servidor da web multithread, como o Apache 2 no Windows. Thread Safety funciona criando uma cópia de armazenamento local em cada thread, para que os dados não colidam com outro thread.

Então o que eu escolho? Se você escolher executar o PHP como um binário CGI, não precisará do thread-safety, porque o binário é invocado a cada solicitação. Para servidores da web multithread, como IIS5 e IIS6, você deve usar a versão threaded do PHP.

Então, realmente depende de como você deseja usar o PHP:

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

O manual do PHP tem boas instruções de instalação .

O AFAIR executando PHP com FastCGI é a maneira preferível, pois executa mais rápido e permite configurações de segurança mais refinadas.

Crack
fonte
11
Esta página informa que: "Se você estiver usando PHP com IIS, deve usar as versões Non-Thread Safe (NTS) do PHP." em comparação com a resposta: "IIS: Thread Safe"
umutm
9
Sim, e menciona FastCGI. Thread Safe é para usar ISAPI (php5isapi.dll)
Crack
3
Por que se preocupar com a opção não thread-safe? É como: se eu pudesse escolher entre comprar um carro seguro e um não seguro, por que escolheria o carro não seguro? Ele tem um desempenho melhor ou algo assim?
Simon East
4
@SimonEast A versão NTS tem alguns threads de gerenciamento de sobrecarga, que já são feitos pelo servidor da web, então o desempenho será degradado
ReZa
3
@SimonEast Exatamente. É como fazer um trabalho duas vezes, uma em PHP e outra em servidor web
ReZa 02 de
2

Rápido e simples: Se você estiver usando o Apache, edite seu arquivo Apache24 \ conf \ httpd.conf e procure por "loadmodule". Se você perceber que seu módulo de carregamento está fazendo referência a um .dll, algo como:

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

Então você quer Thread Safety habilitado ou TS - versão Thread Safe .

Caso contrário, se você estiver usando IIS ou Apache com CGI, então o sabor NTS.

Eu uso várias pilhas e dentro desses vários servidores e versões de PHP, portanto, não deixe que os caminhos / php ou versões de servidor o atrapalhem.

Jim
fonte
0

Além do Crack, desde o 5.4 você pode usar um servidor web embutido (funciona bem!).

Aviso Este servidor web foi projetado para auxiliar no desenvolvimento de aplicativos. Também pode ser útil para fins de teste ou para demonstrações de aplicativos que são executados em ambientes controlados. Não se destina a ser um servidor da Web completo. Não deve ser usado em uma rede pública.

Saso.Filipovic
fonte
13
Você precisa adicionar algum tipo de referência ao que está falando. Qual servidor da web embutido? Como isso se relaciona com ThreadSafe vs NotThreadSafe?
Despertar
2
Acho que por servidor web embutido, ele se refere ao servidor web embutido do PHP ( php -S ip:port) - embora nenhuma ideia sobre a relação com a segurança de thread.
David Refoua