J'ai développé des applications basées sur le web jusqu'à présent à l'aide de PHP, Python et Java. Mais certains fondamentaux, mais des questions très importantes sont encore au-delà de mes connaissances, j'ai donc fait ce post pour obtenir de l'aide et éclaircissements de vous les gars.
Dis-je utiliser certains langage de programmation comme mon backend langage(PHP/Python/.Net/Java, etc), et je déployer mon application avec un serveur web(apache/lighttpd/nginx/IIS, etc). Et supposons qu'à l'instant T, l'une de mes page a obtenu 100 demandes simultanées de différents utilisateurs. Donc mes questions sont:
- Comment est-ce que mon serveur web poignée de ces 100 demandes simultanées? Va serveur web de générer un processus/thread pour chaque demande? (si oui, un processus ou un thread?)
- Comment l'interprète du backend langue? Comment est-il gérer la demande et de générer du html propre? Sera l'interprète de générer un processus ou un thread pour chaque demande?(si oui, un processus ou un thread?)
- Si l'interprète de générer un processus ou un thread pour chaque demande, comment au sujet de ces processus(les threads)? Vont-ils partager du code de l'espace? Vont-ils communiquer les uns avec les autres? Comment gérer les variables globales dans le backend codes? Ou ils sont indépendants les processus(les threads)? Combien de temps est la durée du processus/thread? Ils seront détruits lorsque la demande est traitée et que la réponse est renvoyée?
- Supposons que le serveur web ne peuvent prendre en charge 100 demandes simultanées, mais maintenant il a obtenu 1000 demandes simultanées. Comment gérer une telle situation? Est-il gérer comme une file d'attente et le traitement de la demande lorsque le serveur est disponible? Ou d'autres approches?
- J'ai lu quelques articles sur la Comète ces jours-ci. Et je l'ai trouvé long de la connexion peut être un bon moyen de traiter en temps réel multi-utilisateurs de cas d'utilisation. Alors, comment au sujet de longue connexion? Est-ce une caractéristique de certains serveurs web ou il est disponible pour tous les serveurs web? Connexion longue nécessitera un long-existant interprète processus?
Merci à tous. Ces questions me gênait beaucoup. Donc j'espère que vous pouvez aider. Une réponse plus détaillée sera grandement apprécié. Et s'il vous plaît ajouter des références.
Ce qui concerne.
EDIT: Récemment, j'ai lu quelques articles à propos de CGI, fastcgi, ce qui me fait connaître l'approche de fastcgi devrait être une approche typique pour hanlde demande.
le protocole de multiplexes une seule connexion de transport entre plusieurs requêtes FastCGI. Cela prend en charge les applications qui sont en mesure de traiter les demandes simultanées à l'aide de l'événement ou du multi-thread techniques de programmation.
Cité de fastcgi spec, qui mentionne la connexion qui peut gérer plusieurs demandes, et peut être mis en œuvre en multi-thread tech. Je me demandais cette connexion peut être traitée en tant que processus et il peut générer plusieurs threads pour chaque demande. Si cela est vrai, je deviens plus confus sur la façon de gérer la ressource partagée dans chaque thread?
P. S merci à Thomas pour les conseils de spiting le poteau à plusieurs postes, mais je pense que les questions sont liées et il est préférable de les regrouper.
Merci à S. Lott pour votre réponse, mais quelques réponses à chaque question sont trop brèves ou non couverte.
Merci à tout le monde de réponse, qui me rend plus proche de la vérité.
Une réponse détaillée sera grandement apprécié!