PHP Thread Safe und Non-Thread Safe für Windows

88

Ich lade PHP für Windows herunter. Ich habe 2 Optionen auf der Website.

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

Bitte beantworten Sie die folgenden Fragen:

  1. Was ist der Unterschied zwischen den beiden? Was sind die Vor- und Nachteile gegenüber einander?
  2. Ich entwickle eine E-Commerce-Website mit starkem Datenverkehr. Welche wird mehr empfohlen und warum?
sumit
quelle
1
Was verstehen Sie unter "starkem Verkehr" und wie können Sie sicher sein, dass Sie ihn bekommen?
Crack
@ Crack- Starker Verkehr bedeutet, dass viele, viele Benutzer die Website zu einem bestimmten Zeitpunkt nutzen. Warum kann ich mir da nicht sicher sein?! Stimmt etwas nicht?
Summe
Nur dieser "starke Verkehr" kann auf viele Arten definiert werden, und was für manche Menschen starker Verkehr ist, kann für manche mäßiger oder sogar leichter Verkehr sein. Eine nützliche Metrik ist hier Seitentreffer / Tag / Stunde / Minute, jede Art von objektiver Messung.
Crack

Antworten:

91

Aus der PHP-Dokumentation:

Thread-Sicherheit bedeutet, dass Binärdateien in einem Multithread-Webserver-Kontext wie Apache 2 unter Windows funktionieren können. Thread-Sicherheit erstellt in jedem Thread eine lokale Speicherkopie, damit die Daten nicht mit einem anderen Thread kollidieren.

Also, was wähle ich? Wenn Sie PHP als CGI-Binärdatei ausführen, benötigen Sie keine Thread-Sicherheit, da die Binärdatei bei jeder Anforderung aufgerufen wird. Für Multithread-Webserver wie IIS5 und IIS6 sollten Sie die Thread-Version von PHP verwenden.

Es hängt also wirklich davon ab, wie Sie PHP verwenden möchten:

  • Apache + LoadModule: Thread-sicher
  • Apache + FastCGI: Nicht Thread-sicher
  • IIS: Thread-sicher
  • IIS + FastCGI: Nicht threadsicher

Das PHP-Handbuch enthält eine schöne Installationsanleitung .

AFAIR, das PHP mit FastCGI ausführt, ist die bevorzugte Methode. Es arbeitet schneller und ermöglicht eine feinere Sicherheitskonfiguration.

Riss
quelle
11
Auf dieser Seite heißt es: "Wenn Sie PHP mit IIS verwenden, sollten Sie die NTS-Versionen (Non-Thread Safe) von PHP verwenden." verglichen mit der Antwort: "IIS: Thread Safe"
umutm
9
Ja, und es wird FastCGI erwähnt. Thread Safe ist für die Verwendung von ISAPI (php5isapi.dll)
Crack
3
Warum sollte man sich überhaupt mit einer nicht threadsicheren Option beschäftigen? Es ist wie: Wenn ich zwischen dem Kauf eines sicheren Autos und einem nicht sicheren Auto wählen könnte, warum sollte ich jemals das nicht sichere Auto wählen? Funktioniert es besser oder so?
Simon East
4
@ SimonEast Die NTS-Version hat einige Overhead-Verwaltungsthreads, die bereits vom Webserver ausgeführt werden, so dass die Leistung
beeinträchtigt
3
@ SimonEast Genau. Es ist, als würde man zweimal einen Job machen, einmal in PHP und einmal im Webserver
ReZa
2

Schnell und einfach: Wenn Sie Apache verwenden, bearbeiten Sie Ihre Apache24 \ conf \ httpd.conf-Datei und suchen Sie nach "loadmodule". Wenn Sie sehen, dass Ihr Lademodul auf eine DLL verweist, wie folgt:

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

Dann möchten Sie Thread Safety aktiviert oder TS - Thread Safe Version .

Andernfalls, wenn Sie IIS oder Apache mit CGI verwenden, dann NTS-Variante.

Ich verwende mehrere Stapel und innerhalb dieser mehreren Server und Versionen von PHP, also lassen Sie sich nicht von den Pfaden / PHP- oder Serverversionen werfen.

Jim
quelle
0

Zusätzlich zu Crack können Sie seit 5.4 einen eingebauten Webserver verwenden (es funktioniert gut!).

Saso.Filipovic
quelle
12
Sie müssen eine Art Verweis auf das hinzufügen, worüber Sie sprechen. Welcher eingebaute Webserver? In welcher Beziehung steht dies zu ThreadSafe vs NotThreadSafe?
Despertar
1
Ich denke, mit dem eingebauten Webserver meint er den eingebauten Webserver ( php -S ip:port) von PHP - aber keine Ahnung von der Beziehung zur Thread-Sicherheit.
David Refoua