2010-04-09 5 views
0

Je voudrais mieux comprendre exactement ce qui se passe quand Apache sous linux reçoit une requête HTTP dans un modèle de pré-fork de processus. Supposons que nous ayons 20 processus enfants Apache en attente.Apache sur linux et i18n: processus de fonte ou threads?

Lorsque je reçois une requête HTTP, est-il vrai que 1 processus fils sera choisi pour gérer la demande et que ce processus ne traitera pas une autre requête d'un autre utilisateur tant que le premier n'est pas terminé?

Je pose la question à cause d'une limitation de PHP qui stipule:

The locale information is maintained per process, not per thread. 
If you are running PHP on a multithreaded server API like IIS or Apache 
on Windows, you may experience sudden changes in locale settings while a script 
is running, though the script itself never called setlocale(). This happens due 
to other scripts running in different threads of the same process at the same 
time, changing the process-wide locale using setlocale(). 

Répondre

0

En général, si vous travaillez avec mpm-prefork que chaque instance PHP a son propre processus de sorte qu'il est sûr de modifier les paramètres linguistiques, si vous travaillez avec mpm-worker ou mpm-event alors vous n'êtes pas en sécurité.

Aussi si vous exécutez PHP comme processus fastcgi derrière tout serveur, il forks aussi bien et il a un processus par connexion. Donc, ça devrait être sûr aussi.

Notes:

  • En général, il n'y a aucune raison de ne pas utiliser mpm-prefork sous Linux lors de l'exécution PHP.
  • Sous Windows, il n'y a pas de "fourche" donc Apache est multi-threadé sous Windows