Forum Clubic

Chat : SimpleXML ou SQLite ?

Bonjour à tous.

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

Génial… :frowning:

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 :
<?xml version="1.0" encoding="ISO-8859-1"?>

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<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 :

$chaine = 'chapitre';
$chaine = utf8_encode($chaine);

Et pour la lecture du XML les lignes suivantes :

$chaine = $chapitre->titre;
$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?

  1. 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 :

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
FROM forum_amis
LEFT JOIN forum_membres ON membre_id = ami_from
LEFT JOIN forum_whosonline ON online_id = ami_from
LEFT JOIN chat_prive ON chat_prive.conv_id = forum_amis.ami_lastpost
WHERE ami_to = '".$_SESSION['id']."' AND ami_confirm = '1'
ORDER BY ami_date, online_id DESC");
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");
mysql_query("INSERT INTO chat_prive VALUES('', '$am_from', '$am_to', '$conv_texte', '".$temps."', '$conv_pseudo')");
$derniermess = mysql_insert_id();
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. :wink:

Je n’ai jamais utilisé SQLite donc je ne peux pas garantir que ça marchera sans modifier les requêtes.

Par contre, du point de vue des performances, SQLite me parait largement préférable à SimpleXML (entre autres pour possibilité de récupérer des données sans avoir à lire le fichier en entier),et permet d’éviter les problématiques d’accès concurrents qui peuvent se poser avec un fichier XML.
Edité le 29/10/2007 à 14:19

Voire à la limite, préfère un système de fichier bien pensé.

Tu peux te passer ET de SimpleXML ET de SQLLite.

Ceci dit, pourquoi t’embêter avec un système de chat quand il existe IRC bien plus puissant et des applet Java aussi puissante telle que PJIrc? Tu aurais alors plus qu’à trouver un hébergeur pour ton chat (ex: darkmyst, undernet, etc).

Je connais un peu IRC, 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…

Sinon effectivement SQLite a l’air déjà plus préférable au XML pour l’usage que j’en ferais.

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… :frowning:
Edité le 29/10/2007 à 17:15

dedibox? C’est toi qui gère… et paf :wink: