Hvad er de tekniske forskelle mellem Thread Safe og Non Thread Safe PHP Windows Installation Pakker?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er i øjeblikket ved at installere PHP til et Apache/Windows-baseret udviklingsmiljø, men det ser ud til at jeg er ved at falde ved første forhindring: Valg af den rigtige pakke til installation.


PHP er tilgængeligt i ikke mindre end fire smag: [1]



  • VC9 x86 Non Thread Safe

  • VC9 x86 tråd sikker

  • VC6 x86 Non Thread Safe

  • VC6 x86 tråd sikker



Hvad er forskellen mellem disse versioner i en praktisk mening?


Hvis dette ikke var kompliceret nok, er version 5.3 af PHP kun tilgængelig i VC9 (med 5.2 kommer med VC6-pakkerne). Og ifølge PHP-webstedet skal du ikke bruge VC9 med Apache ... Så hvorfor får Apache den ældre version?


Det er meget forvirrende, og jeg vil gerne hjælpe med at forstå valgene.

Bedste reference


Efter en masse forskning har jeg formået at finde mine egne svar på dette spørgsmål.


I sin mest grundlæggende form er svaret: Hvilken version af PHP du skal installere, kommer ned, hvilken webserver du kører.


Her er en dybere forklaring på de udtryk, der anvendes til at vælge en version af PHP baseret på det, jeg lærte:





VC6 vs VC9



For det første er forskellige versioner af Apache til Windows kompileret med forskellige kompilatorer. For eksempel er versionerne på Apache.org designet til at blive udarbejdet ved hjælp af Microsoft Visual C ++ 6 , også kendt som VC6 . Denne compiler er meget populær, men også meget gammel. (Det går tilbage til 1998.) [2]


Der er forskellige versioner af Apache lavet til forskellige kompilatorer. For eksempel er versionerne, der er tilgængelige til download fra ApacheLounge.com, designet til at blive kompileret med den populære og mere meget nyere compiler, Microsoft Visual C ++ 9 fra 2008. Også kendt som VC9 . [3]


(Bemærk: Disse to kompilatorer er de to mest populære muligheder. Så selvom det er muligt at have en VC7, VC8, osv. Kompileret version af Apache, er det usandsynligt, at du kommer over dem.)


Brugen af ​​denne nyere compiler (VC9) er vigtig, fordi de nyeste versioner af PHP kun distribueres i VC9-formularen (selvom ældre versioner stadig er tilgængelige for VC6).


Derudover er der ifølge ApacheLounge mange forbedringer, når man bruger en version af Apache, der er kompileret med VC9, 'på områder som Performance, MemoryManagement and Stability'.


Hvis det ikke var nok, lavede udviklerne af PHP følgende erklæring på deres websted:



  Windows-brugere: Husk at vi gør
  giver ikke længere bygninger oprettet med
  Visual Studio C ++ 6 (VC6). det er
  umuligt at opretholde en høj kvalitet
  og sikker opbygning af PHP til Windows
  ved hjælp af denne uovervindelige kompilator.

  
   Vi anbefaler, at VC9 Apache bygger som
  leveret af ApacheLounge
.

  
  Alle PHP-brugere skal bemærke, at PHP
  5.2 serien understøttes IKKE længere. Alle brugere opfordres kraftigt til
  opgradere til PHP 5.3.6.



Alt i alt er dette et yderst overbevisende argument for at bruge VC9 versioner af Apache og PHP, hvis du spørger mig.


Så hvis du bruger en version af Apache fra det officielle Apache-websted, vil det blive kompileret med VC6, og som sådan skal du bruge den ældre version af PHP til den compiler. Hvis du bruger en version af Apache kompileret med VC9, som den, der er tilgængelig på ApacheLounge.com, kan du bruge den nyeste version af PHP (til VC9). [4] [5]


For mig, der kører et lokalt udviklingsmiljø, ville det være at foretrække at have den nyeste version af PHP, så en VC9-version af Apache er nødvendig, så jeg kan bruge VC9-versionen af ​​PHP.


Tråd Safe vs Non Thread Safe



Endnu engang kommer det til din webserver. Apache er som standard installeret på Windows som Modul , men det kan ændres til at køre som FastCGI . Der er mange forskelle mellem de to, men i det væsentlige FastCGI er mere moderne, hurtigere, mere robust og mere ressource hungrig. For nogen der kører et lokalt udviklingsmiljø, kan FastCGI være overkill, men tilsyneladende mange hostingfirmaer kører som FastCGI for de grunde, jeg har sagt, så der er gode argumenter for at gøre det i et udviklingsmiljø.


Hvis du kører Apache (eller IIS) som FastCGI (eller CGI), vil du have Non Thread Safe versionen af ​​PHP. Hvis du kører Apache som standard (som et modul), så 'Jeg vil have den mere traditionelle Tråd sikker version.


Bemærk: Dette gælder kun for Windows-brugere.





Jeg vil ikke gider med FastCGI (medmindre nogen overbeviser mig ellers), så jeg vil gerne have VC9 Tråd sikker version af PHP .


Og det er det.


Yderligere læsning:



  • Officiel erklæring vedrørende PHP og VC6

  • Forskel på PHP-tråds sikre og ikke-trådløse binære filer

  • FastCGI på Wikipedia

  • FastCGI for IIS

  • Visual C ++ på Wikipedia

  • Kompilér dit eget PHP (forklaring af VC6/VC9)


Andre referencer 1


Personligt bruger jeg en virtualiseret LAMP-server. Hver hosting service jeg bruger er på nogle smag af Linux, og der er for mange forskelle mellem WAMP og LAMP. Så bruger jeg bare standard tasksel LAMP server til den version af Linux. [6] [7] [8] [9] [10] [11]


Min aktuelle opsætning er nu med VMWare (Fusion på Mac, Player på Windows). Jeg har 3 VM'er - en til PHP5.3 med Ubuntu 10.04 LTS, og en anden til PHP 5.1 på Ubuntu 8.04 LTS. (En af værterne jeg bruger er på RedHat, som i øjeblikket understøtter kun PHP 5.1). Jeg har en tredje VM til RubyOnRails dev.


Med andre ord forsøger jeg at få mit udviklingsmiljø så tæt på mit produktionsmiljø som muligt. Så find ud af hvilken version af Apache og PHP der er på din vært, og brug det som din vejledning.