Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/08/2011, 15h36   #1
Invité régulier
 
Inscription : août 2011
Messages : 29
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 29
Points : 9
Points : 9
Par défaut Interface chat "IRC Like"

Bonjour à tous,

Je poste ce message dans PHP, car c'est le langage principal de mon projet, et par conséquent le langage dans le quel je cherche une solution possible (Je suis ouvert à d'autre possibilités).

Voilà la problématique :

Il est question d’intégrer dans un projet, un chat (multi-canal), possédant quelques fonctions particulières. Ce chat doit être capable de tenir une charge d'au moins 500 utilisateurs sans impacter le reste des performances du server (Apache & co). Il doit gerer des commandes IRC de base tel que /msg /me /join /part /notice (et quelques autres), quelques alias de commandes spéciales, ainsi que des bricoles pas méchante. Le support doit être capable de déplacer les utilisateurs de salon en toute transparence suivant des paramètres transmit par php. (Un peu à la maniere des chat dans les MMORPG type World of warcraft)

Solutions envisagées :

Ce que je ne veux pas : Java, Flash et IFrame (si possible).

En terme de serveur, ce que je connais le mieux est UnrealIRCd. Malheureusement, la mise en place d'un client pour ce genre de serveur peut s'averer fastidieuse voir impossible sans IFrame...

Ensuite, il y a Jabber, avec eJabberd et une interface web. Là aussi, la plupart des client que j'ai pu voir possède une IFrame, et les quelques librairies permettant de developper un client sont difficile à maitriser.

PHP+MySQL n'est même pas penssable, ainsi qu'un fichier texte type shoutbox. Il sagit là d'un "vrai chat".

Autre ?

Question :

Connaissez vous d'autre solutions, ou, avez-vous déjà du mettre en place ce genre de structure ? Que faut-il prendre en compte ? Dans quel sens proceder ?

J'ai vraiment besoin d'avis, de conseil et de feedback car c'est la première fois que je travail sur ce genre de projet.

D'avance, je vous remercie
OnaStick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 15h40   #2
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Salut,

As tu regarder PHP free chat ? Cependant je ne sais pas quelle charge il peut tenir pour ne pas l'avoir déployé.
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 15h50   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 104
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 104
Points : 8 452
Points : 8 452
PHP c'est pas fait pour, mais regarde du coté des WebSocket
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 15h53   #4
Invité régulier
 
Inscription : août 2011
Messages : 29
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 29
Points : 9
Points : 9
Bonjour,

Merci pour ta réponse.

Cependant, il semblerait que ce soit plus une usine à gaz qu'autre chose. D'après ce que j'ai compri, il utilise des fichiers pour stocker les messages, avec possibilité de MySQL et IRC backend. Je doute la charge supportable sois bien énorme, et une certaine lenteur doit s'installer dans le traitement des évènements.
OnaStick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 15h55   #5
Invité régulier
 
Inscription : août 2011
Messages : 29
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 29
Points : 9
Points : 9
stealth35, je suis ouvert à d'autre solution, comme python ou perl. Mais l'integration dans une page déjà constitué peut être farfelu...
Si tu as des infos, j'suis preneur

De plus, les WebSocket ne plus supporté par les navigateurs suite à une faille dans l'API. Sinon la solution semblait être prometteuse !
OnaStick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 16h03   #6
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Citation:
Envoyé par OnaStick Voir le message
Bonjour,

Merci pour ta réponse.

Cependant, il semblerait que ce soit plus une usine à gaz qu'autre chose. D'après ce que j'ai compri, il utilise des fichiers pour stocker les messages, avec possibilité de MySQL et IRC backend. Je doute la charge supportable sois bien énorme, et une certaine lenteur doit s'installer dans le traitement des évènements.
Ok, pas de possibilité d'extension ? en changeant le système de stockage par exemple ? (utiliser à la place de mysql des engines plus rapide comme solr ou berkeleydb...)
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 16h06   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 104
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 104
Points : 8 452
Points : 8 452
Citation:
Envoyé par OnaStick Voir le message
stealth35, je suis ouvert à d'autre solution, comme python ou perl. Mais l'integration dans une page déjà constitué peut être farfelu...
Si tu as des infos, j'suis preneur
tu parles uniquement de langages coté serveur, le problème vient du coté client qui est ultra limité en terme de connexion socket.
peut importe la technologie serveur, ça ne changera rien.


Pour le WebSocket, c'est pareil il va te falloir un serveur (node.js par exemple)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 16h06   #8
Invité régulier
 
Inscription : août 2011
Messages : 29
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 29
Points : 9
Points : 9
Citation:
Envoyé par Thes32 Voir le message
Ok, pas de possibilité d'extension ? en changeant le système de stockage par exemple ? (utiliser à la place de mysql des engines plus rapide comme solr ou berkeleydb...)
Le fait est que la charge va surement augmenter rapidement, donc même avec quelque chose de rapide, si la charge d'utilisateur est multiplié par 2 ou 3, on en reviendrai au même point
OnaStick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 16h15   #9
Invité régulier
 
Inscription : août 2011
Messages : 29
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 29
Points : 9
Points : 9
Citation:
Envoyé par stealth35 Voir le message
tu parles uniquement de langages coté serveur, le problème vient du coté client qui est ultra limité en terme de connexion socket.
peut importe la technologie serveur, ça ne changera rien.


Pour le WebSocket, c'est pareil il va te falloir un serveur (node.js par exemple)
Ca m'a l'air bien fragile tout ça. M'enfin, comme dit plus haut, vu la polémique autour de cette fonctionnalité, et les navigateurs qui refuse de la supporter du à cette fameuse faille, je prefere m'en passer.
OnaStick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 16h20   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 104
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 104
Points : 8 452
Points : 8 452
Citation:
Envoyé par OnaStick Voir le message
Ca m'a l'air bien fragile tout ça. M'enfin, comme dit plus haut, vu la polémique autour de cette fonctionnalité, et les navigateurs qui refuse de la supporter du à cette fameuse faille, je prefere m'en passer.
Si tu ne veux aucune technologies clientes, ni serveurs, ton projet n'est pas possible.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 16h40   #11
Invité régulier
 
Inscription : août 2011
Messages : 29
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 29
Points : 9
Points : 9
C'est pas que je ne veux pas, c'est que celle que tu me proposes là ne va plus être supporter par tout les grands navigateur. Dans ce cas, elle n'a donc plus aucune utilité ta solution. et je doute qu'elle puisse tenir d'énorme charge. sinon c'était très prometteur.

Mais je reste ouvert à d'autre proposition plus fiable à l'heure actuelle. Les contraintes ne sont pas énormes, pas de flash, pas de java, pas de iframe (mais là c'pas une obligation je peux m'en accomoder), pas de fichier, pas de base de donner.
OnaStick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 16h45   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 104
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 104
Points : 8 452
Points : 8 452
Citation:
Envoyé par OnaStick Voir le message
C'est pas que je ne veux pas, c'est que celle que tu me proposes là ne va plus être supporter par tout les grands navigateur. Dans ce cas, elle n'a donc plus aucune utilité ta solution.

Mais je reste ouvert à d'autre proposition plus fiable à l'heure actuelle. Les contraintes ne sont pas énormes, pas de flash, pas de java, pas de iframe (mais là c'pas une obligation je peux m'en accomoder), pas de fichier, pas de base de donner.
je te parlai aussi du reste comme java et flash et sans autre deamon, ce que tu cherches à faire sans tous ça n'est tout simplement pas possible.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 16h48   #13
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Citation:
et je doute qu'elle puisse tenir d'énorme charge
Tu parle de tenir la charge depuis le début du thread alors que tu semble vouloir faire une interface client.
Celui qui doit tenir la charge c'est le serveur (deamon irc ou jabber si j ai bien compris), pas le client. Au pire des cas ton client va recevoir quelques kb de texte , rien de bien méchant.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 17h10   #14
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Citation:
Envoyé par OnaStick Voir le message
Ca m'a l'air bien fragile tout ça. M'enfin, comme dit plus haut, vu la polémique autour de cette fonctionnalité, et les navigateurs qui refuse de la supporter du à cette fameuse faille, je prefere m'en passer.
Comment tu fais pour savoir si c'est fragile ? juste par le nom ? Dire que nodejs est fragile c'est quand même pas tenable.
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 18h20   #15
Invité régulier
 
Inscription : août 2011
Messages : 29
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 29
Points : 9
Points : 9
Citation:
Envoyé par Thes32 Voir le message
Comment tu fais pour savoir si c'est fragile ? juste par le nom ? Dire que nodejs est fragile c'est quand même pas tenable.
De par les exemples de mise en oeuvre que j'ai trouvé sur le web. Après c'était un avis perso, j'ai le droit de me tromper aussi

Citation:
je te parlai aussi du reste comme java et flash et sans autre deamon, ce que tu cherches à faire sans tous ça n'est tout simplement pas possible.
Oullalah... C'est lourd d'être prit pour un con... Il faudrait lire les topics sérieux :

- Flash et Java sont des contraintes, c'est à dire que même si ca me plait pas de faire sans, comme MySQL. J'applique une consigne.

- Je suis ouvert à toutes propositions, mais quand on me dit websocket => Websocket. J'suis désolé, c'pas utilisable en prod...

A partir de là, il reste quelle solution valable ?

peut-être CGI:IRC par exemple, vous en pensez quoi ? un truc plus leger serait plus facilement adaptable et modifiable...

m'enfin bref..
OnaStick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 18h27   #16
Modérateur
 
Inscription : septembre 2010
Messages : 7 104
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 104
Points : 8 452
Points : 8 452
Citation:
Envoyé par OnaStick Voir le message
A partir de là, il reste quelle solution valable ?
reste plus grand chose, pour le CGI, le problème est que c'est de la requête en continu pour le client.

Pour le reste merci de resté correct.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 18h48   #17
Invité régulier
 
Inscription : août 2011
Messages : 29
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 29
Points : 9
Points : 9
Moi côté serveur, je m'en cogne un peu de ce qu'il y a, tant que ca répond à mes besoins. Il faut juste que l'impact sur le reste sois minime, tout sera sur un seul serveur (au début).

les clients actuel comme mibbit fonctionne de quelle maniere ? (j'ai pas besoin d'un d'utre aussi compliqué et complet ^^)
OnaStick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 19h06   #18
Modérateur
 
Inscription : septembre 2010
Messages : 7 104
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 104
Points : 8 452
Points : 8 452
de l'AJAX comme tout les clients sans plugin.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 19h11   #19
Invité régulier
 
Inscription : août 2011
Messages : 29
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 29
Points : 9
Points : 9
Ca d'accord, mais qu'est ce qui maintient la connexion aec le server ? du php sans doute, mais de qui'elle maniere ? et jax est utilisé comment ?

Parce que bon, une boucle php maintient une connexion, mais ajax ne peut pas itransmettre de réponse tant le script php ne se termine pas.
OnaStick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 19h23   #20
Modérateur
 
Inscription : septembre 2010
Messages : 7 104
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 104
Points : 8 452
Points : 8 452
Citation:
Envoyé par OnaStick Voir le message
Ca d'accord, mais qu'est ce qui maintient la connexion aec le server ? du php sans doute, mais de qui'elle maniere ? et jax est utilisé comment ?

Parce que bon, une boucle php maintient une connexion, mais ajax ne peut pas itransmettre de réponse tant le script php ne se termine pas.
derriere t'as un démon qui qui traitent les requêtes, tu peux faire un démon (pas un page) en php, c'est que je te dit depuis de debut le client n'est pas important le principale c'est qu'il y'a coté serveur,
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h26.


 
 
 
 
Partenaires

Hébergement Web