PHP Thread Safe y Non-Thread Safe para Windows

89

Estoy descargando PHP para Windows. Tengo 2 opciones en el sitio web.

  1. Seguro para subprocesos PHP
  2. PHP no seguro para subprocesos

Por favor, conteste a las siguientes preguntas:

  1. ¿Cuál es la diferencia entre los dos? ¿Cuáles son las ventajas y desventajas entre sí?
  2. Estoy desarrollando un sitio web de comercio electrónico que tendrá mucho tráfico, ¿cuál es más recomendable y por qué?
sumitir
fuente
1
¿Qué entiende por "tráfico pesado" y cómo puede estar seguro de que lo obtendrá?
Crack
@ Crack: tráfico intenso significa que muchos usuarios utilizarán el sitio web en un momento determinado. ¡¿Por qué no puedo estar seguro de eso ?! ¿Tiene algo de malo?
enviar
Sólo ese "tráfico pesado" puede definirse de muchas formas, y lo que para algunas personas es tráfico intenso para algunos puede ser tráfico moderado o incluso ligero. Una métrica útil aquí son las visitas a la página / día / hora / minuto, cualquier tipo de medida objetiva.
Crack

Respuestas:

93

De la documentación de PHP:

Thread Safety significa que los binarios pueden funcionar en un contexto de servidor web multiproceso, como Apache 2 en Windows. Thread Safety funciona creando una copia de almacenamiento local en cada hilo, para que los datos no choquen con otro hilo.

Entonces, ¿qué elijo? Si elige ejecutar PHP como un binario CGI, entonces no necesitará seguridad de subprocesos, porque el binario se invoca en cada solicitud. Para servidores web multiproceso, como IIS5 e IIS6, debe usar la versión con subprocesos de PHP.

Entonces, realmente depende de la forma en que desee usar PHP:

  • Apache + LoadModule: seguro para subprocesos
  • Apache + FastCGI: no seguro para subprocesos
  • IIS: seguro para subprocesos
  • IIS + FastCGI: no seguro para subprocesos

El manual de PHP tiene buenas instrucciones de instalación .

AFAIR ejecutar PHP con FastCGI es la forma preferible, funciona más rápido y permite una configuración de seguridad más detallada.

Grieta
fuente
11
Esta página dice que: "Si está utilizando PHP con IIS, debe utilizar las versiones de PHP no seguras para subprocesos (NTS)". en comparación con la respuesta que dice: "IIS: Thread Safe"
umutm
9
Sí, y menciona FastCGI. Thread Safe es para cuando se usa ISAPI (php5isapi.dll)
Crack
3
¿Por qué molestarse con la opción no segura para subprocesos? Es como: si pudiera elegir entre comprar un auto seguro y un auto no seguro, ¿por qué elegiría el auto no seguro? ¿Funciona mejor o algo así?
Simon East
4
@SimonEast La versión NTS tiene algunos subprocesos de administración de sobrecarga, que ya están hechos por el servidor web, por lo que el rendimiento se degradará
ReZa
3
@SimonEast Exactamente. Es como hacer un trabajo dos veces, una en PHP y otra en el servidor web
ReZa
2

Rápido y simple: si está utilizando Apache, edite su archivo Apache24 \ conf \ httpd.conf y busque "loadmodule". Si ve que su módulo de carga hace referencia a un .dll, algo como:

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

Entonces desea que Thread Safety esté habilitado o TS - Thread Safe versión .

De lo contrario, si está utilizando IIS o Apache con CGI, entonces el sabor NTS.

Utilizo múltiples pilas y dentro de esos múltiples servidores y versiones de PHP, así que no dejes que las rutas / php o las versiones del servidor te arrojen.

Jim
fuente
0

Además de Crack, desde 5.4 puedes usar el servidor web incorporado (¡funciona bien!).

Advertencia Este servidor web fue diseñado para ayudar al desarrollo de aplicaciones. También puede resultar útil para realizar pruebas o para demostraciones de aplicaciones que se ejecutan en entornos controlados. No está destinado a ser un servidor web con todas las funciones. No debe usarse en una red pública.

Saso.Filipovic
fuente
13
Necesita agregar algún tipo de referencia a lo que está hablando. ¿Qué servidor web integrado? ¿Cómo se relaciona esto con ThreadSafe vs NotThreadSafe?
Despertar
2
Creo que por el servidor web incorporado, se refiere al servidor web incorporado de PHP ( php -S ip:port), aunque no tengo idea de la relación con la seguridad de los subprocesos.
David Refoua