chat : SimpleXML ou SQLite?

chat : SimpleXML ou SQLite? - SQL/NoSQL - Programmation

Marsh Posté le 29-10-2007 à 13:50:22    

Bonjour à tous.
 
J'ai créée un chat privé en PHP/MySQL/Javascript pour un site (ça c'est bon ça fonctionne :) ), seulement en voulant l'uploader sur mon hébergeur (1and1) j'ai vu la phrase suivante :

Citation :

Une base de données MySQL ne doit en aucun cas être utilisée pour des évaluations de log, des clics publicitaires, des systèmes de chat, des systèmes de rotation de bannières, ou toute autre application qui pourrait encombrer votre base de données de charges trop importantes.


Génial... :sweat:  
 
Ne voulant pas me faire bannir de mon hébergement, j'ai alors cherché une nouvelle manière de gérer ma base de données pour sauvegarder les conversations :
 
1) Je suis premièrement tombé sur le SimpleXML.
J'ai compris le fonctionnement, mais j'ai par contre un problème avec l'encodage des caractères.
Tout au début de mon XML j'ai :

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>


Au début de ma page PHP j'ai :

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. </head>
  6. <body>


Malgré tout à chaque fois que je veux ajouter du contenu à mon XML, pour ne pas avoir de problèmes avec les accents, je dois ajouter les lignes suivantes :

Code :
  1. $chaine = 'chapitre';
  2. $chaine = utf8_encode($chaine);


Et pour la lecture du XML les lignes suivantes :

Code :
  1. $chaine = $chapitre->titre;
  2. $chaine = utf8_decode($chaine);


Avec ça, ça marche, mais vu comment ça n'est pas pratique, je me dis qu'il doit quand même y avoir un problème! :whistle:  
Quelqu'un a une solution?
 
2) Ce matin j'ai découvert SQLite.
Ca a l'air d'être une alternative intéressante, surtout que mon code MySQL est déjà fait et que ça y ressemble pas mal, mais j'ai lu que certaines fonctions MySQL n'étaient pas prises en compte par SQLite.
 
Voici les requêtes MySQL que j'utilise :

Code :
  1. mysql_query("SELECT ami_from, ami_to, ami_date, ami_lastpost, membre_pseudo, membre_avatar, online_id, conv_texte, conv_date, conv_pseudo, conv_id
  2. FROM forum_amis
  3. LEFT JOIN forum_membres ON membre_id = ami_from
  4. LEFT JOIN forum_whosonline ON online_id = ami_from
  5. LEFT JOIN chat_prive ON chat_prive.conv_id = forum_amis.ami_lastpost
  6. WHERE ami_to = '".$_SESSION['id']."' AND ami_confirm = '1'
  7. ORDER BY ami_date, online_id DESC" );


Code :
  1. mysql_query("SELECT * FROM chat_prive WHERE conv_from = $am_from && conv_to = $am_to || conv_from = $am_to && conv_to = $am_from ORDER BY conv_id DESC LIMIT 0,50" );


Code :
  1. mysql_query("INSERT INTO chat_prive VALUES('', '$am_from', '$am_to', '$conv_texte', '".$temps."', '$conv_pseudo')" );


Code :
  1. $derniermess = mysql_insert_id();


Code :
  1. mysql_query("UPDATE forum_amis SET ami_lastpost = '".$derniermess."' WHERE ami_from = '".$am_from."' && ami_to = '".$am_to."' || ami_to = '".$am_from."' && ami_from = '".$am_to."' " );


Je voudrais savoir si je ne risque pas d'avoir des problèmes pour le passage du MySQL au SQLite, et lequel, entre SimpleXML et SQLite, serait plus adapté à mes besoins (chat, donc il risque d'y avoir beaucoup de texte) ?
 
Merci pour vos réponses. :jap:

Message cité 1 fois
Message édité par Zoltan32 le 29-10-2007 à 13:51:55
Reply

Marsh Posté le 29-10-2007 à 13:50:22   

Reply

Marsh Posté le 29-10-2007 à 14:04:51    

Zoltan32 a écrit :


Je voudrais savoir si je ne risque pas d'avoir des problèmes pour le passage du MySQL au SQLite, et lequel, entre SimpleXML et SQLite, serait plus adapté à mes besoins (chat, donc il risque d'y avoir beaucoup de texte) ?
Merci pour vos réponses. :jap:


A 1er vue, j'aurais tendance a regardé les problèmes d'accès concurent car il va y avoir beaucoup lecture/d'écriture sur le même fichier vu que c'est un tchat. et aussi le temps d'accès.


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 29-10-2007 à 17:15:11    

Effectivement, d'après ce que j'ai lu, SQLite a l'air déjà plus préférable au XML pour l'usage que j'en ferais (d'autant qu'en XML c'est à chaque requête la totalité du fichier qui est ouvert).
 
On m'a suggérer IRC, du coup j'ai testé PJIRC, mais j'ai trouvé l'interface très austère. Mon chat doit servir pour un site de rencontre, il faut donc qu'il soit accueillant.
Il faut que je puisse customiser l'interface pour qu'elle s'accorde avec le reste du site. De plus, comme il s'agit d'un chat privé, il faut que le chat soit en étroite relation avec la base de donnée pour que les id des membres servent de filtre au conversation (qu'on ne puisse pas les conversations des autres personnes quoi), et qu'on n'ait pas à se logger une seconde fois (= une fois pour le site, une seconde fois pour accéder au chat). J'ai aussi une page de gestions des amis sur laquelle apparait le dernier texte dit avec chaque personne (parce que ça doit indifféremment servir de chat privé/mail privé), donc il faut que les conversations restent aisément accessibles.
Et d'après ce que j'ai lu sur d'autres forums à propos d'IRC, il faut bidouiller le Java de l'applet IRC pour pouvoir modifier quelque chose. Et comme je n'y connais rien en Java...
 
1and1 propose bien un module de chat, mais on ne peut rien modifier.
 
J'ai essayé de voir aussi pour un chat en Flash, mais toujours le même problème pour le stockage des conversations.
Après je ne suis pas obligé de conserver toutes les conversations depuis le début, je peux par exemple ne garder que les 100 derniers messages pour chaque personne, mais rien qu'avec 20 personnes ça fait déjà 2000 messages...
 
Et personne ne connaitrait sinon un hébergeur qui accepte l'utilisation du MySQL pour les services un peu "lourd" comme les chats? Parce que c'est bête là mon système marche très bien (en plus je m'étais galéré à le passer en asynchrone pour que ça fasse moins de charge serveur), c'est juste l'hébergeur qui pose problème... :(

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed