¿Cuáles son las diferencias técnicas entre los paquetes de instalación de Windows PHP Thread Safe y Non Thread?

Actualmente estoy a punto de instalar PHP para un entorno de desarrollo basado en Apache / Windows, pero parece que estoy a punto de caer en el primer obstáculo: elegir el paquete correcto para instalar.

PHP está disponible en no menos de cuatro sabores :

  • VC9 x86 Sin hilo Safe
  • VC9 x86 Thread Safe
  • VC6 x86 Sin hilos Safe
  • VC6 x86 Thread Safe

¿Cuál es la diferencia entre estas versiones en un sentido práctico ?

Si esto no fuera lo suficientemente complicado, la versión 5.3 de PHP solo está disponible en VC9 (con 5.2 viniendo con los paquetes de VC6). Y, sin embargo, de acuerdo con el sitio PHP, no debería usar VC9 con Apache … Entonces, ¿por qué Apache obtiene la versión anterior?

Es todo muy confuso y me gustaría algo de ayuda para entender las opciones.

Después de mucha investigación, he logrado encontrar mis propias respuestas a esta pregunta.

En su forma más básica, la respuesta es: qué versión de PHP debe instalar baja qué servidor web está ejecutando.

Aquí hay una explicación más profunda de los términos utilizados para elegir una versión de PHP en función de lo que aprendí:


VC6 vs VC9

En primer lugar, se comstackn diferentes versiones de Apache para Windows con diferentes comstackdores. Por ejemplo, las versiones en Apache.org están diseñadas para ser comstackdas usando Microsoft Visual C ++ 6 , también conocido como VC6 . Este comstackdor es muy popular, pero también muy antiguo. (Se remonta a 1998.)

Hay diferentes versiones de Apache hechas para diferentes comstackdores. Por ejemplo, las versiones disponibles para descargar desde ApacheLounge.com están diseñadas para ser comstackdas con el popular y más reciente comstackdor, Microsoft Visual C ++ 9 de 2008. También conocido como VC9 .

(Nota: estos dos comstackdores son las dos opciones más populares. Por lo tanto, si bien es posible tener una versión comstackda de Apache de VC7, VC8, etc., es poco probable que los encuentre).

El uso de este comstackdor más reciente (VC9) es importante porque las últimas versiones de PHP solo se están distribuyendo en formato VC9 (aunque las versiones anteriores todavía están disponibles para VC6).

Además de eso, según ApacheLounge, existen numerosas mejoras cuando se utiliza una versión de Apache comstackda con VC9, “en áreas como Performance, MemoryManagement and Stability”.

Si eso no fuera suficiente, los desarrolladores de PHP hicieron la siguiente statement en su sitio:

Usuarios de Windows: tenga en cuenta que ya no proporcionamos comstackciones creadas con Visual Studio C ++ 6 (VC6). Es imposible mantener una comstackción segura y de alta calidad de PHP para Windows utilizando este comstackdor sin mantenimiento.

Recomendamos las comstackciones de VC9 Apache proporcionadas por ApacheLounge .

Todos los usuarios de PHP deben tener en cuenta que la serie PHP 5.2 ya no es compatible. Se recomienda encarecidamente a todos los usuarios que actualicen a PHP 5.3.6.

En general, este es un argumento extremadamente convincente para usar las versiones VC9 de Apache y PHP, si me preguntas.

Entonces, si está utilizando una versión de Apache del sitio oficial de Apache , se comstackrá con VC6, y como tal, debería usar la versión anterior de PHP para ese comstackdor. Si está utilizando una versión de Apache comstackda con VC9, como la disponible en ApacheLounge.com , puede usar la última versión de PHP (para VC9).

Para mí, al ejecutar un entorno de desarrollo local, sería preferible tener la última versión de PHP, por lo que se requiere una versión VC9 de Apache, así que puedo usar la versión VC9 de PHP.

Thread Safe vs. Non Thread Safe

Una vez más esto se reduce a su servidor web. De forma predeterminada, Apache está instalado en Windows como Módulo , pero se puede cambiar para que se ejecute como FastCGI . Hay muchas diferencias entre los dos, pero esencialmente FastCGI es más moderno, más rápido, más robusto y más hambriento de recursos. Para alguien que ejecuta un entorno de desarrollo local, FastCGI puede ser excesivo, pero al parecer muchas compañías de hosting se ejecutan como FastCGI por las razones que he indicado, por lo que hay buenos argumentos para hacerlo en un entorno de desarrollo.

Si está ejecutando Apache (o IIS) como FastCGI (o CGI), entonces quiere la versión Non Thread Safe de PHP. Si está ejecutando Apache por defecto (como un Módulo), entonces querrá la versión Thread Safe más tradicional.

Tenga en cuenta: esto solo se aplica a los usuarios de Windows.


No voy a molestarme con FastCGI (a menos que alguien me convenza de lo contrario), así que para mí, quiero la versión VC9 Thread Safe de PHP .

Y eso es.

Otras lecturas:

  • Declaración oficial sobre PHP y VC6
  • Diferencia entre los binarios seguros de subprocesos seguros de subprocesos y no subprocesos de PHP
  • FastCGI en Wikipedia
  • FastCGI para IIS
  • Visual C ++ en Wikipedia
  • Comstack tu propio PHP (explicación de VC6 / VC9)

Personalmente, utilizo un servidor LAMP virtualizado. Cada servicio de alojamiento que uso tiene cierto sabor de Linux, y hay demasiadas diferencias entre WAMP y LAMP. Entonces solo uso el servidor LAMP tasksel por defecto para esa versión de Linux.

Mi configuración actual ahora es con VMWare (Fusion en Mac, Player en Windows). Tengo 3 máquinas virtuales: una para PHP5.3 con Ubuntu 10.04 LTS y otra para PHP 5.1 en Ubuntu 8.04 LTS. (Uno de los hosts que uso está en RedHat, que actualmente solo admite PHP 5.1). Tengo una tercera máquina virtual para RubyOnRails dev.

En otras palabras, bash que mi entorno de desarrollo esté lo más cerca posible de mi entorno de producción. Así que averigüe qué versión de Apache y PHP está en su host y utilícela como su guía.