Bonjour,
Sauriez-vous par hasard fonctionne le principe de threads avec Apache 2 ?
Ma constation ; à (chaque ?) nouvelle connexion, Apache creer un nouveau process en mémoire, mais comment cela marche ?
Quel est le principe même ? comment communique le process pere (le deamon qui receptionne les connexion) vers un nouveau process enfant (qui communique directement avec le client ?) ?
Pour le moment ma methode de conception est la suivante :
Un seul et même process ecoute sur un port, creer un thread par client, et repond au client et ceci ce repete.
A part ma maniere et celle d'Apache, il y a t-il une meilleuir maniere de faire ?
Merci par avance.
# Doc Apache
Posté par netsurfeur . Évalué à 2.
Le mieux est peut-être de lire la doc. http://httpd.apache.org/docs/2.2/mpm.html et de revenir ici poser des questions plus précises si nécessaire.
[^] # Re: Doc Apache
Posté par able . Évalué à 1.
Si je comprends bien la doc, moi ce qui me conviendrais le plus serais les des threads "securisé / sandboxé", autrement dit ; je lance un thread qui plante (buffer overflow, ...) il ne fait pas planter tout le process (donc le serveur est toujours OK, même si un des threads est hs).
Quels types de termes dois-je recherchais ? avez-vous des man que je pourrais lire ?
Merci beaucoup.
[^] # Re: Doc Apache
Posté par peck (site web personnel) . Évalué à 2.
Pour ta question de départ, dans le cas des processus, apache crée des socket unix (man socketpair) avant de forker pour communiquer avec ses fils.
Ensuite, après un accept, il envoit la nouvelle socket à travers la socket unix (man unix -> SO_RIGHTS) et le fils communique alors directement avec le client.
# Threads / forks
Posté par Kerro . Évalué à 2.
Apache utilise à la fois les threads et les forks.
Il y a par exemple 5 processus pré-forkés qui attendent. Et chaque processus est configuré pour gérer par exemple 4 threads.
En général le plus simple et le plus efficace est de faire des forks (pré-forks si vraiment tu crois que c'est important). En 5 lignes de programmes tu crés un fork et tu gères les codes de retour. Il te faut lire la doc de ton langage favoris et faire quelques essais.
Un article de fond ne fait pas de mal non plus.
# select()
Posté par castorpilot . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.