PHP Thread Safe et non Thread Safe pour Windows

88

Je télécharge PHP pour Windows. J'ai 2 options sur le site Web.

  1. PHP Thread Safe
  2. PHP non sécurisé pour les threads

Merci de répondre aux questions suivantes:

  1. Quelle est la différence entre les deux? Quels sont les avantages et les inconvénients les uns par rapport aux autres?
  2. Je développe un site e-commerce qui aura un trafic important, lequel est le plus recommandé et pourquoi?
sumit
la source
1
duplication possible de ce qui est thread-safe ou non thread-safe en PHP
Shef
1
Qu'entendez-vous par «trafic intense» et comment pouvez-vous être sûr de l'obtenir?
Crack
@ Crack - Un trafic important signifie que plusieurs utilisateurs utiliseront le site Web à un moment donné. Pourquoi ne puis-je pas en être sûr?! Quelque chose ne va pas avec ça?
sumit
Seul ce «trafic lourd» peut être défini de plusieurs façons, et ce qui est pour certaines personnes un trafic lourd pour certains peut être un trafic modéré ou même léger. Une métrique utile ici est le nombre de pages consultées / jour / heure / minute, tout type de mesure objective.
Crack

Réponses:

92

Depuis la documentation PHP:

Thread Safety signifie que le binaire peut fonctionner dans un contexte de serveur Web multithread, tel qu'Apache 2 sous Windows. Thread Safety fonctionne en créant une copie de stockage local dans chaque thread, afin que les données n'entrent pas en collision avec un autre thread.

Alors qu'est-ce que je choisis? Si vous choisissez d'exécuter PHP en tant que binaire CGI, vous n'aurez pas besoin de la sécurité des threads, car le binaire est appelé à chaque requête. Pour les serveurs Web multithread, tels que IIS5 et IIS6, vous devez utiliser la version threadée de PHP.

Cela dépend donc vraiment de la manière dont vous souhaitez utiliser PHP:

  • Apache + LoadModule: Thread Safe
  • Apache + FastCGI: Non-Thread Safe
  • IIS: Thread Safe
  • IIS + FastCGI: Non-Thread Safe

Le manuel PHP a de belles instructions d'installation .

AFAIR exécutant PHP avec FastCGI est le moyen préférable, il fonctionne plus rapidement et permet une configuration de sécurité plus fine.

Fissure
la source
11
Cette page indique que: "Si vous utilisez PHP avec IIS, vous devez utiliser les versions NTS (Non-Thread Safe) de PHP." par rapport à la réponse disant: "IIS: Thread Safe"
umutm
9
Oui, et il mentionne FastCGI. Thread Safe est pour l'utilisation d'ISAPI (php5isapi.dll)
Crack
3
Pourquoi s'embêter avec une option non thread-safe? C'est comme: si je pouvais choisir entre acheter une voiture sûre et une voiture non sûre, pourquoi choisirais-je jamais la voiture non sûre? Est-ce qu'il fonctionne mieux ou quelque chose?
Simon East
4
@SimonEast La version NTS a des frais généraux de gestion des threads, qui sont déjà effectués par le serveur Web, donc les performances seront dégradées
ReZa
3
@SimonEast Exactement. C'est comme faire un travail deux fois, une fois en PHP et une fois sur le serveur Web
ReZa
2

Rapide et simple: si vous utilisez Apache, modifiez votre fichier Apache24 \ conf \ httpd.conf et recherchez "loadmodule". Si vous voyez que votre loadmodule fait référence à un .dll quelque chose comme:

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

Ensuite, vous voulez que Thread Safety soit activé ou TS - Thread Safe version .

Sinon, si vous utilisez IIS ou Apache avec CGI, la saveur NTS.

J'utilise plusieurs piles et dans ces multiples serveurs et versions de PHP, alors ne vous laissez pas déranger par les chemins / php ou les versions de serveur.

Jim
la source
0

En plus de Crack, depuis la version 5.4, vous pouvez utiliser un serveur Web intégré (cela fonctionne bien!).

Avertissement Ce serveur Web a été conçu pour faciliter le développement d'applications. Il peut également être utile à des fins de test ou pour des démonstrations d'applications exécutées dans des environnements contrôlés. Il n'est pas destiné à être un serveur Web complet. Il ne doit pas être utilisé sur un réseau public.

Saso.Filipovic
la source
13
Vous devez ajouter une sorte de référence à ce dont vous parlez. Quel serveur Web intégré? Quel est le lien entre ThreadSafe et NotThreadSafe?
Despertar
2
Je pense que par le serveur Web intégré, il veut dire le serveur Web intégré de PHP ( php -S ip:port) - aucune idée de la relation avec la sécurité des threads cependant.
David Refoua