Question

Je prévois d'utiliser php dans un environnement intégré. Notre serveur Web actuel est thttpd. J'envisage maintenant deux options: le faire fonctionner en tant que cgi ou en tant que module SAPI. Je sais que cgi a un avantage en termes de sécurité. Mais si nous devons utiliser php en tant que cgi, une instance de php doit être chargée dans la mémoire pour chaque requête.

J'ai essayé de le compiler en tant que module SAPI de thttpd et j'ai constaté que l'utilisation de la mémoire par thttpd, en particulier rss, ne devenait pas plus grande à mesure que le nombre de requêtes augmentait.

Quelqu'un peut-il expliquer comment thttpd charge php? Est-il chargé une seule fois et reste-t-il dans la mémoire tant que thttpd est en cours d'exécution? Si tel est le cas, nous pouvons considérer cela comme une alternative au cgi.

Effectue-t-il le multi-threading, c’est-à-dire s’il existe plusieurs requêtes http en même temps? ou traite-t-il une requête à la fois?

Existe-t-il une bonne documentation traitant du comportement de php en tant que module de thttpd?

Était-ce utile?

La solution

Je n'ai aucune expérience de thttpd, mais voici quelques indications:

  • le moteur PHP est thread-safe, mais certaines extensions ne le sont pas, aussi les gens hésitent-ils à l'utiliser dans un environnement multi-thread et préfèrent utiliser la méthode one-process - one-request
  • Oui, généralement, les modules de serveur Web (comme Apache mod_ *) fonctionnent en restant résidents, mais le gros bémol pour PHP consiste à analyser le fichier source (ou même plusieurs fichiers sources si vous utilisez include / require) pendant chaque demande. Vous pouvez réduire ce problème en utilisant quelque chose comme APC qui met en cache la version analysée des fichiers
  • il existe également un protocole appelé FastCGI que vous voudrez peut-être examiner - il s’agit en réalité d’un croisement entre le module et la solution CGI - il accélère un ou deux processus, chaque processus héberge une seule instance du problème CGI (PHP dans ce cas) et les utilise pour traiter les demandes. Les instances sont recyclées (c’est-à-dire qu’elles peuvent traiter plusieurs demandes l’une après l’autre).
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top