Bezpieczny wątek PHP i bezpieczny dla wątków dla Windows

89

Pobieram PHP dla systemu Windows. Na stronie mam 2 opcje.

  1. Bezpieczny wątek PHP
  2. PHP Non-Thread Safe

Proszę odpowiedzieć na następujące pytania:

  1. Jaka jest różnica między nimi? Jakie są zalety i wady w stosunku do siebie?
  2. Tworzę stronę e-commerce, która będzie miała duży ruch, która jest bardziej polecana i dlaczego?
sumit
źródło
1
Co rozumiesz przez „duży ruch” i skąd możesz mieć pewność, że go dostaniesz?
Crack
@ Crack- Duży ruch oznacza, że ​​wielu, wielu użytkowników będzie korzystać z serwisu w danym momencie. Dlaczego nie mogę być tego pewien ?! Coś z tym nie tak?
sumit
Tyle że „duży ruch” można zdefiniować na wiele sposobów, a dla niektórych to, co jest dużym ruchem, dla niektórych może być ruchem umiarkowanym lub nawet małym. Przydatnym wskaźnikiem są tutaj odwiedziny strony / dzień / godzina / minuta, dowolny rodzaj obiektywnej miary.
Crack

Odpowiedzi:

93

Z dokumentacji PHP:

Bezpieczeństwo wątków oznacza, że ​​plik binarny może działać w kontekście wielowątkowego serwera WWW, takiego jak Apache 2 w systemie Windows. Funkcja Thread Safety polega na tworzeniu kopii magazynu lokalnego w każdym wątku, aby dane nie kolidowały z innym wątkiem.

Więc co mam wybrać? Jeśli zdecydujesz się uruchomić PHP jako plik binarny CGI, nie będziesz potrzebować zabezpieczenia wątków, ponieważ plik binarny jest wywoływany przy każdym żądaniu. W przypadku wielowątkowych serwerów internetowych, takich jak IIS5 i IIS6, należy używać wątkowej wersji PHP.

Więc to naprawdę zależy od sposobu, w jaki chcesz używać PHP:

  • Apache + LoadModule: bezpieczny wątek
  • Apache + FastCGI: bezpieczny dla wątków
  • IIS: bezpieczny wątkowo
  • IIS + FastCGI: bezpieczeństwo bez wątków

Podręcznik PHP zawiera ładne instrukcje instalacji .

AFAIR z uruchomionym PHP z FastCGI jest preferowanym sposobem, działa szybciej i pozwala na bardziej szczegółową konfigurację zabezpieczeń.

Pęknięcie
źródło
11
Ta strona mówi, że: „Jeśli używasz PHP z IIS, powinieneś używać wersji PHP bez bezpiecznej obsługi wątków (NTS)”. w porównaniu z odpowiedzią mówiącą: „IIS: Thread Safe”
umutm
9
Tak, i wspomina o FastCGI. Bezpieczne wątek jest przy użyciu ISAPI (php5isapi.dll)
Pęknięcie
3
Po co w ogóle zawracać sobie głowę opcją niegwintowaną? To tak: gdybym mógł wybierać między kupnem samochodu bezpiecznego i niezabezpieczonego, dlaczego miałbym kiedykolwiek wybierać ten niezabezpieczony? Działa lepiej, czy coś?
Simon East,
4
@SimonEast Wersja NTS ma kilka ogólnych wątków zarządzających, które są już wykonywane przez serwer sieciowy, więc wydajność zostanie
obniżona
3
@SimonEast Exactly. To tak, jakby wykonywać pracę dwa razy, raz w PHP i raz na serwerze internetowym
ReZa
2

Szybko i prosto: jeśli używasz Apache, edytuj plik Apache24 \ conf \ httpd.conf i wyszukaj „loadmodule”. Jeśli zauważysz, że moduł loadmodule odwołuje się do pliku .dll, na przykład:

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

Następnie chcesz włączyć funkcję Thread Safety lub wersję TS - Thread Safe .

W przeciwnym razie, jeśli używasz IIS lub Apache z CGI, to smak NTS.

Używam wielu stosów i tych wielu serwerów i wersji PHP, więc nie pozwól, aby ścieżki / php lub wersje serwera Cię zrzuciły.

Jim
źródło
0

Oprócz Cracka, od wersji 5.4 możesz korzystać z wbudowanego serwera WWW (działa!).

Ostrzeżenie Ten serwer WWW został zaprojektowany, aby pomóc w tworzeniu aplikacji. Może być również przydatny do celów testowych lub demonstracji aplikacji uruchamianych w kontrolowanych środowiskach. Nie ma być w pełni funkcjonalnym serwerem WWW. Nie należy go używać w sieci publicznej.

Saso.Filipovic
źródło
13
Musisz dodać jakieś odniesienie do tego, o czym mówisz. Jaki wbudowany serwer WWW? Jak to się ma do ThreadSafe i NotThreadSafe?
Despertar
2
Myślę, że przez wbudowany serwer WWWphp -S ip:port ma na myśli wbudowany serwer WWW PHP ( ) - nie mam jednak pojęcia o związku z bezpieczeństwem wątków.
David Refoua