PS: Nous sommes 2 sur le projet, c'est pourquoi je me permet de répondre pour Regma comme nous réfléchissons à 2 et que nous n'avons pas les mêmes horaires
Pour le moment je ne vois rien qui nécessite plus d'un thread.
Merci pour cette analyse, je vais revoir la réflexion de mon programme.
Je vois également beaucoup de choix techniques : PHP, HTTP, C, pthreads.. mais pas de détails concrets sur ce que tu cherches à réaliser. Comment es-tu parvenu à déterminer que ces solutions sont pertinentes pour ton application ?
J'ai déterminer :
- l'utilisation du PHP par moi-même car dans mon application je fais déjà appel à des web services en PHP et je ne souhaite pas remettre en place un autre serveur, d'autre part comme tu l'as mentionné le programme ne requiert pas beaucoup de ressources c'est pourquoi je me suis tourné vers php même si les threads en PHP(en théorie) ne sont pas les plus performants. Pour compléter je n'ai pas l'envie d'échanger ma partie serveur actuelle avec un backend C ou C++.
- l'utilisation du HTTP(S) pour à peu près les mêmes raisons, mon application communique avec mon serveur de cette façon et je n'avais pas vraiment envie de partir sur un autre protocole de communication ou de l'implémenter dans un autre langage.
- Le C justement je ne suis pas à l'aise avec, mais pthreads que j'utilise en PHP provient avant tout du C. Comme mon post concerne avant tout une techno de ce langage, pour trouver une personne compétente en la matière(cf toi) je me suis résigné à poster dans ce forum.
- l'utilisation de pthread car après plusieurs recherches j'ai constaté que le PHP ne permettait pas de lancer des threads en parallèle, mais qu'avec pthread oui. Bien que, comme tu l'as souligné, je puisse faire mon programme dans un seul thread.
- De plus, le fait de créer 2 threads par client par l'intermédiaire d'un MasterThread m'a été conseillé par un enseignant dans le cadre de mes études mais je suis content d'avoir des avis différents et des réponses précises
- Je pensais également avoir besoin d'un MasterThread pour pouvoir gérer les paires de connexion client, et ainsi rediriger les connexions vers tel ou tels thread qui ont été démarrées pour ce client.
- Mon application n'a besoin que de cette partie serveur pour être opérationnelle, après je compte la mettre en production et je ne voudrai pas me lancer dans de nouvelles technos d'autre langage pour ce genre de traitements.
De plus, une fois l'application publiée je vais devoir configurer mon propre serveur chez un hébergeur, configuration que je souhaite maitrisée tant dans sa mise en place que dans sa maintenance et son évolutivité.
Pourrai tu me donner un exemple de détails concrets que je devrais avoir énoncer ? je suis un peu dur de la feuille et je ne comprend pas vraiment ce que tu attends ... je pensais les avoir précisés.
Tu n'y es pas : le client et le serveur se mettent d'accord pour établir un canal de communication privilégié, puis s'en servent pour s'échanger des messages uniquement. Il revient à chacun d'interpréter leur contenu.
Donc je n'ai pas à me soucier de gérer les événements types "confirmation de réception", "confirmation d'attente", etc... ? événements que je voulais mettre en place pour synchroniser le déroulement du programme au niveau client et serveur.
Si c'est le cas, j'ai un manque d'expérience et de connaissance certains, mais j'ai également été mal conseillé sur cette façon de faire.
Le serveur maintient donc autant de canaux que de clients connectés. Ces canaux sont représentés par des descripteurs (sockets). select lui permet d'écouter tous ces descripteurs à la fois et de jongler entre tous les messages qui lui parviennent de sources multiples.
Peux tu me confirmer stp qu'il est possible de gérer ces descripteurs de fichiers(avec select) sur un Linux fourni par un hébergeur ?
Il existe un équivalent à select(2) sous Windows. Cela dit méfie-toi tout de même des subtiles différences de comportement des appels système réseau bas niveau selon les plateformes.
Et puis tu peux toujours utiliser une machine virtuelle sous Linux ou un Raspberry Pi pour ton serveur local..
Si je comprend bien, ce que j'en retire implicitement, c'est que gérer les threads avec mes requêtes sur des .php, mes petits appels http tous çà c'est mort
il faut que parte sur une communication TCP et un backend en C ou C++ obligatoirement ?
Je m'en vais faire des recherches de mon coté bien sur, mais n'aurai tu pas une solution pour allier apache et un équivalent select ? tu me l'as déjà dit select est un appel système au niveau de l'OS mais je ne voudrais pas dépendre de l'OS pour gérer çà mais plutôt dépendre de mon serveur web.
Pour en savoir plus sur la programmation réseau en général, consulte les tutoriaux de Bousk dans la section jeux. Je crois que c'est écrit en C++ mais les concepts sont les mêmes.
Je n'y manquerai pas.
J'en ai appris plus dans cette discussion que durant les derniers mois passés, tu es merveilleux
bien à toi,
Partager