PHP thread safe e non thread safe per Windows


91

Sto scaricando PHP per Windows. Ho 2 opzioni sul sito web.

  1. PHP Thread Safe
  2. PHP non thread-safe

Per favore, rispondi alle seguenti domande:

  1. Qual è la differenza tra i due? Quali sono i vantaggi e gli svantaggi l'uno rispetto all'altro?
  2. Sto sviluppando un sito di e-commerce che avrà un traffico intenso, quale è più consigliato e perché?


1
Cosa intendi per "traffico intenso" e come puoi essere sicuro di ottenerlo?
Crack

@ Crack- Il traffico intenso significa che molti utenti utilizzeranno il sito Web in un dato momento. Perché non posso esserne sicuro ?! Qualcosa non va?
inviare il

Solo quel "traffico intenso" può essere definito in molti modi, e quello che per alcune persone è traffico intenso per altri può essere traffico moderato o addirittura leggero. Una metrica utile qui è visite alla pagina / giorno / ora / minuto, qualsiasi tipo di misura oggettiva.
Crack

Risposte:


95

Dalla documentazione PHP:

Thread Safety significa che il binario può funzionare in un contesto di server web multithread, come Apache 2 su Windows. Thread Safety funziona creando una copia di archiviazione locale in ogni thread, in modo che i dati non entrino in conflitto con un altro thread.

Allora cosa scelgo? Se scegli di eseguire PHP come binario CGI, non avrai bisogno della sicurezza del thread, perché il binario viene invocato ad ogni richiesta. Per i server Web multithread, come IIS5 e IIS6, è necessario utilizzare la versione con thread di PHP.

Quindi dipende davvero dal modo in cui vuoi usare PHP:

  • Apache + LoadModule: thread-safe
  • Apache + FastCGI: non thread-safe
  • IIS: thread-safe
  • IIS + FastCGI: non thread-safe

Il manuale PHP ha delle belle istruzioni per l'installazione .

AFAIR che esegue PHP con FastCGI è il modo preferibile, è più veloce e consente una configurazione di sicurezza più dettagliata.


11
Questa pagina dice che: "Se stai usando PHP con IIS dovresti usare le versioni Non-Thread Safe (NTS) di PHP." rispetto alla risposta che diceva: "IIS: Thread Safe"
umutm

9
Sì, e menziona FastCGI. Thread Safe è per quando si utilizza ISAPI (php5isapi.dll)
Crack

3
Perché preoccuparsi di un'opzione non thread-safe? È come: se potessi scegliere tra l'acquisto di un'auto sicura e un'auto non sicura, perché dovrei scegliere l'auto non sicura? Funziona meglio o qualcosa del genere?
Simon East

4
@SimonEast La versione NTS ha alcuni thread di gestione dell'overhead, che sono già fatti dal server web, quindi le prestazioni saranno degradate
ReZa

3
@ SimonEast Esattamente. È come fare un lavoro due volte, una volta in PHP e una volta nel server web
ReZa

2

Veloce e semplice: se stai usando Apache modifica il tuo file Apache24 \ conf \ httpd.conf e cerca "loadmodule". Se vedi che il tuo loadmodule fa riferimento a un file .dll qualcosa del tipo:

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

Quindi si desidera che Thread Safety sia abilitato o TS - versione Thread Safe .

Altrimenti, se stai usando IIS o Apache con CGI, allora il sapore NTS.

Uso più stack e all'interno di quei server multipli e versioni di PHP quindi non lasciare che i percorsi / php o le versioni del server ti lanciano.


0

Oltre a Crack, dalla 5.4 puoi usare il web server integrato (funziona bene!).

Avviso Questo server web è stato progettato per aiutare lo sviluppo dell'applicazione. Può anche essere utile a scopo di test o per dimostrazioni di applicazioni eseguite in ambienti controllati. Non è concepito per essere un server web completo. Non dovrebbe essere utilizzato su una rete pubblica.


13
Devi aggiungere una sorta di riferimento a ciò di cui stai parlando. Quale server web integrato? Che relazione c'è tra ThreadSafe e NotThreadSafe?
Despertar

2
Penso che per il server web integrato, intenda il webserver ( php -S ip:port) integrato di PHP - non ho idea della relazione con la sicurezza dei thread.
David Refoua
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.