A propos de la progra d'un forum [UPDATE]

A propos de la progra d'un forum [UPDATE] - PHP - Programmation

Marsh Posté le 25-06-2003 à 14:54:41    

Bonjour à tous :hello:
 
Je suis en train de programmer un petit forum sans prétention, bien loin des PPC (:D), et j'aimerai avoir vos avis :
 
---------------------------------------
 
 
EDIT : MAINTENANT LE PROBLEME EST :
 
Je n'arrive pas a remplacer ceci avec une Regexp :/
je voudrai remplacer ce bout de code par un espace :)
 

<table width="70%" border="0" cellspacing="0" cellpadding="0" bgcolor="#000000" align="center">
<tr>
<td>
<table width="100%" border="0" cellspacing="1" cellpadding="5">
<tr>
<td class="quote"><b>(.+?) a ecrit :</b> <br> (.+?)</td>
</tr>
</table>
</td>
</tr>
</table>


 
 
---------------------------------------
 
Disons que 1000 personnes se sont inscrites pour avoir mon forum (Qui reste sur un meme serveur), cela fait donc 1000 forums :)
 
Comptons 10 tables pour un forum normal.
 
Je me pose la question suivante :
Est il préférable de découper les tables ; par exemple :
 
Pour le forum 1 :

  • forum_cat_1
  • forum_users_1


Pour le forum 2 :

  • forum_cat_2
  • forum_users_2


Cela fait 10 tables par forum ; avec 1000 forums, on obtient alors 10 000 tables !
 
Est-ce jouable ? :??:
 
En définitive, je voudrais faire cela pour la table des messages, car 10 000 000 de messages (Prenons un extreme), sur une seule table, ca risque de bien ramer ...
Alors que si je découpe les tables ; chaque forum a sa table des messages, c'est deja beaucoup mieux ;)
 
Voili voilou, qu'est ce que vous en pensez ?
Est ce techniquement possible ? :)
 
Merci a tous ;) :jap:


Message édité par Max Evans le 29-06-2003 à 13:44:48

---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 25-06-2003 à 14:54:41   

Reply

Marsh Posté le 25-06-2003 à 15:11:56    

heu... je suis pas sur d'avoir compris... mais je crois ke tu t'y prends mal... regardes des sources de sites et tu verras c pas comme ca kon fait c ingérable ton  truc... faut utiliser des ids.... pour pouvoir replacer un post en fonction de sa catégorie rubrique et du post en lui même .. et tu sé se lancer dans la prog d'un forum.... comme ca si t'as pas de conaissances c un peu chaud essayes des trucs plus simples d'abord... comme un systeme de news avec commentaires... c un bon début ca te donnera des idées pour faire le forum apres...

Reply

Marsh Posté le 25-06-2003 à 15:13:53    

oula déja 1000 user ca me semble enorme
 
déja une 100 c bq pour un petit site
 
alors si chacun des 100 membre poste 10 topics de 10 msg par exemple, cela reviens 100x10x10 soit 10 000 msg
 
ca semble jouable a mon avis mais chui pas un grand expert apres faut voir le serveur et le débit et tout et tout ...

Reply

Marsh Posté le 25-06-2003 à 15:51:04    

en fait je crois qu'il veut faire une sorte de location de forum.. cad plusieurs personnes prennent le forum qu'il a conçu et en font ce qu'elles veulent mais c'est lui heberge la BDD... si c'est ça t'es pas dans la merde

Reply

Marsh Posté le 25-06-2003 à 16:29:35    

c'est claire que si c'est ce que tu dis on peut prendre mon calcul et le multiplié apr le nombre de forum existant
 
imagine que 100 personne prenne son forum
 
et qu'on prend ma théorie des 10 000 msg par forum
 
on atteind le million de msg a stocké dans la bdd (sans parlé de tous chaque champ de chaque table)   :pt1cable:  :pt1cable:  :pt1cable:

Reply

Marsh Posté le 25-06-2003 à 16:32:35    

c'est en tout cas comme ça que je l'ai compris. Après, c'est à lui de nous le confirmer et c'est clair que si c'est ça, ça va être bien lourd...

Reply

Marsh Posté le 25-06-2003 à 17:52:11    

Max Evans a écrit :

[...]Je me pose la question suivante :
Est il préférable de découper les tables ; par exemple :
 
Pour le forum 1 :

  • forum_cat_1
  • forum_users_1


Pour le forum 2 :

  • forum_cat_2
  • forum_users_2


Cela fait 10 tables par forum ; avec 1000 forums, on obtient alors 10 000 tables !


Le gros avantage d'une solution de ce type c'est que tu peux proposer davantage de sécurité et de flexibilité à tes clients. Ils ont chacun leur base, tu peux leur proposer de la rappratrier indépendant via un dump s'ils souhaitent une sauvegarde. Si un site se fait hacker a cause d'une faille dans un de tes scripts seul un forum sera directement touché ... Ca se défend comme solution :)
 

Citation :

En définitive, je voudrais faire cela pour la table des messages, car 10 000 000 de messages (Prenons un extreme), sur une seule table, ca risque de bien ramer ...
Alors que si je découpe les tables ; chaque forum a sa table des messages, c'est deja beaucoup mieux ;)
 
Voili voilou, qu'est ce que vous en pensez ?
Est ce techniquement possible ? :)


Ne te focalise pas sur la taille des tables, je vois au dessus que certains hallucinent d'imaginer des forums avec 1 million de messages pourtant c'est rien du tout. Avec un modèle de donné intelligent et des index adaptés c'est une quantité de message que tu peux gérer sans le moindre problème.

Reply

Marsh Posté le 25-06-2003 à 17:56:24    

Core 666 a écrit :


Le gros avantage d'une solution de ce type c'est que tu peux proposer davantage de sécurité et de flexibilité à tes clients. Ils ont chacun leur base, tu peux leur proposer de la rappratrier indépendant via un dump s'ils souhaitent une sauvegarde. Si un site se fait hacker a cause d'une faille dans un de tes scripts seul un forum sera directement touché ... Ca se défend comme solution :)

Il a pas parlé de base mais de tables, et donc, si il ne s'est pas tromper, ça rique d'être bordélique...

Reply

Marsh Posté le 25-06-2003 à 17:57:49    

c'est vrai que c'est peut etre pas enorme vu que c que du texte.
 
faut voir
 
 
bon le principal interrésé il réponds tjrs pas ???  :hello:
 
 
ps: et HFR contient combien de messages, bon je vais commencé à les compter
 
 
1, 2 , 3 , 4 ... 439423
 
ah ca va ne faite  :p  


Message édité par nemohp le 25-06-2003 à 18:00:05
Reply

Marsh Posté le 25-06-2003 à 20:16:13    

Kikoo all :hello:
 
Désolé pour le retard ;)
En fin de compte, je crois que je viens de faire pire  :lol:  
 
Je fais une table par categorie ; c'est super lourd comme systeme mais au moins c'est bien plus rapide :)
 
Genre s'il y a 50 000 topics dans la Cat1, et 1 un dans la Cat2, quand je vais consulter la Cat2, ca rame pas d'un poil :D
 
 
Peaceiznotdie13 >> Si si je connais PHP, j'ai deja fait un forum, mais justement, je m'étais heurté au fait que, lorsque j'ai 10 000 000 messages (Posté grace a ma flood machine :D), beh ca ramait secos :/
 
Sinon, je me demandais ...
Avec ma flood machine, j'ai posté 50 000 topiks :D
Et a l'affichage des topiks, ca rame encore pas mal (Genre 0.350s) ; pas super koi :/
 
Sur HFR, il y a 4249 pages dans Bla Bla, a raison de 30 topiks par page, ca fait environ 125 000 topiks, et le temps de génération est de 0.013s :D
 
Ya comme un soucis chez moi :D
Comment Joce a t il fait ? Un split de table ? Un index super bien placé ?
 
Merci a tous, et encore désolé du retard ;)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 25-06-2003 à 20:16:13   

Reply

Marsh Posté le 25-06-2003 à 20:39:55    

[:blueflag]

Reply

Marsh Posté le 26-06-2003 à 10:31:59    

change de ligne adsl et de change le cpu de ton serveur, ca ira plus vite.  :lol:  :lol:  :lol:

Reply

Marsh Posté le 26-06-2003 à 11:01:57    

Max Evans a écrit :

Kikoo all :hello:
 
Désolé pour le retard ;)
En fin de compte, je crois que je viens de faire pire  :lol:  
 
Je fais une table par categorie ; c'est super lourd comme systeme mais au moins c'est bien plus rapide :)
 
Genre s'il y a 50 000 topics dans la Cat1, et 1 un dans la Cat2, quand je vais consulter la Cat2, ca rame pas d'un poil :D
 
 
Peaceiznotdie13 >> Si si je connais PHP, j'ai deja fait un forum, mais justement, je m'étais heurté au fait que, lorsque j'ai 10 000 000 messages (Posté grace a ma flood machine :D), beh ca ramait secos :/
 
Sinon, je me demandais ...
Avec ma flood machine, j'ai posté 50 000 topiks :D
Et a l'affichage des topiks, ca rame encore pas mal (Genre 0.350s) ; pas super koi :/
 
Sur HFR, il y a 4249 pages dans Bla Bla, a raison de 30 topiks par page, ca fait environ 125 000 topiks, et le temps de génération est de 0.013s :D
 
Ya comme un soucis chez moi :D
Comment Joce a t il fait ? Un split de table ? Un index super bien placé ?
 
Merci a tous, et encore désolé du retard ;)

j'ai fait un forum,et j'ai moi en local,j'ai 500 000 messages par categorie et je met 0.030 s maximum pour generer chaque page.Le truc "magique" c'est les index,fait les placer sur les clé primaires.
Sinon,tu peut voir le forum installé sur mon site: http://forum.forum-mp3.net


Message édité par forummp3 le 26-06-2003 à 11:03:00
Reply

Marsh Posté le 26-06-2003 à 22:10:35    

NemoHP a écrit :

change de ligne adsl et de change le cpu de ton serveur, ca ira plus vite.  :lol:  :lol:  :lol:  


 
Ca m'étonnes quand meme en local, sur un AMD 2500 + 1 Go de RAM DDR que ca fasse ca :/


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 26-06-2003 à 22:12:38    

forummp3 a écrit :

j'ai fait un forum,et j'ai moi en local,j'ai 500 000 messages par categorie et je met 0.030 s maximum pour generer chaque page.Le truc "magique" c'est les index,fait les placer sur les clé primaires.
Sinon,tu peut voir le forum installé sur mon site: http://forum.forum-mp3.net


 
Effectivement, je m'en suis apercu ce matin :D
Sans Index, 0.150s, avec 0.009s :D
 
Sinon, j'ai splitté kkes tables, ca marche pas mal ;)
 
Si vous voulez une démo : http://www.smallville-fr.com/forum_test/?id=1
 
PS : C'est PAS DU TOUT fini, c'est carrément rudimentaire, c t juste pour vous montrer ;)
 
PPS : J'ai essayé avec 150 000 topics dans une categorie, ca marche nikel, 0.009s :) Par contre, quand on arrive a la page 4500, la ca rame deja bocoup plus, 0.500s :/
 
Je vais essayer de suivre tes conseils forummp3 en placant les index sur les clefs primaires ;)
 
Encore merci ;)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 26-06-2003 à 22:15:06    

Max Evans a écrit :


 
Effectivement, je m'en suis apercu ce matin :D
Sans Index, 0.150s, avec 0.009s :D
 
Sinon, j'ai splitté kkes tables, ca marche pas mal ;)
 
Si vous voulez une démo : http://www.smallville-fr.com/forum_test/?id=1
 
PS : C'est PAS DU TOUT fini, c'est carrément rudimentaire, c t juste pour vous montrer ;)
 
PPS : J'ai essayé avec 150 000 topics dans une categorie, ca marche nikel, 0.009s :) Par contre, quand on arrive a la page 4500, la ca rame deja bocoup plus, 0.500s :/
 
Je vais essayer de suivre tes conseils forummp3 en placant les index sur les clefs primaires ;)
 
Encore merci ;)

keske tu veux dire par "splitter la table" ? tu t'y prend comment?


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 26-06-2003 à 22:15:16    

forummp3 a écrit :

Le truc "magique" c'est les index,fait les placer sur les clé primaires.

euh non le truc magique c'est les autres index... une primary key est d'office indexée :p


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 26-06-2003 à 22:16:14    

forummp3 a écrit :

keske tu veux dire par "splitter la table" ? tu t'y prend comment?


 
J'ai fait un truc assez fastidieux, en gros pour chaque catagorie, tu as une table :D


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 26-06-2003 à 22:16:56    

the real moins moins a écrit :

euh non le truc magique c'est les autres index... une primary key est d'office indexée :p

faut faire aussi sur les "pseudo clé etrangere" aussi,enfin,celle qui vont servir a faire les jointures.


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 26-06-2003 à 22:17:32    

Max Evans a écrit :


 
J'ai fait un truc assez fastidieux, en gros pour chaque catagorie, tu as une table :D

c'est ce que je fais sur mon forum.


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 26-06-2003 à 22:18:24    

forummp3 a écrit :

c'est ce que je fais sur mon forum.


 
Ha comme quoi, j'suis pas aussi taré que je ne le pensais :D


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 26-06-2003 à 22:19:13    

Par contre, j'ai toujours ce pb, kand on arrive aux messages tres anciens (Genre page 4000 de la page des topics), ca rame assez :/


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 26-06-2003 à 22:20:05    

Max Evans a écrit :


 
Ha comme quoi, j'suis pas aussi taré que je ne le pensais :D

je te rassure,joce fait pareil :D


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 26-06-2003 à 22:20:43    

forummp3 a écrit :

faut faire aussi sur les "pseudo clé etrangere" aussi,enfin,celle qui vont servir a faire les jointures.

ben oui
mais c pas des clés primaires ça [:mlc2]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 26-06-2003 à 22:21:13    

Max Evans a écrit :

Par contre, j'ai toujours ce pb, kand on arrive aux messages tres anciens (Genre page 4000 de la page des topics), ca rame assez :/

moi aussi g ce probleme [:spamafote]
mais vu qu'il est presque improbable que l'on ateigne ce nombre de poste dans nos forums,alors faut pas s'inquieter :D
et puis c'est rare ceux qui vont dans la derniere page.


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 26-06-2003 à 22:21:36    

forummp3 a écrit :

je te rassure,joce fait pareil :D


 
Yes 129 tables pour HFR [:joce]


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 26-06-2003 à 22:21:48    

the real moins moins a écrit :

ben oui
mais c pas des clés primaires ça [:mlc2]

oui,j'avais oublié de dire qu'il fallait en mettre la.


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 26-06-2003 à 22:22:17    

forummp3 a écrit :

moi aussi g ce probleme [:spamafote]
mais vu qu'il est presque improbable que l'on ateigne ce nombre de poste dans nos forums,alors faut pas s'inquieter :D
et puis c'est rare ceux qui vont dans la derniere page.


 
C'est sur ;)
Mais ici, dans la cat Bla bla, j'ai ete a la toute dernier page, et le tps de generation etait de 0.013s [:joce]
 
Houston, on a un pb sur nos forum :D


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 26-06-2003 à 22:27:18    

forummp3 a écrit :

oui,j'avais oublié de dire qu'il fallait en mettre la.

ya que 13 cat :??:


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 27-06-2003 à 01:14:55    

mySQL gère sans problème des milliers de lignes, et les sélectionne très rapidement si on s'y prends bien.
 
Le problème n'est pas d'avoir 10 000 000 de messages mais d'avoir des onlines.
 
Le forum ira plus vite avec 100 personnes sur un forum de 10'000'000 de messages qu'un forum avec 1'000 personnes sur un forum de 100'000 messages par ex.


Message édité par Limit le 27-06-2003 à 01:16:50
Reply

Marsh Posté le 27-06-2003 à 01:19:07    

forummp3 a écrit :

Le truc "magique" c'est les index,fait les placer sur les clé primaires.

Comment ca placer les index sur les clés primaires ? Les clés primaires sont déjà des index uniques.

Reply

Marsh Posté le 27-06-2003 à 02:43:03    

vous faites comment pour afficher le temps d'execution ?
(ca a aucun rapport mais ca minteresse)

Reply

Marsh Posté le 27-06-2003 à 03:10:08    

Tu chopes l'heure au debut de ton script, puis l'heure a la fin de ton script, tu fais la soustraction et cela te donne le tps d'execution :)

Reply

Marsh Posté le 27-06-2003 à 09:40:33    

en ce qui concerne les clés c'est:
 
* une clé primaire pour chaque table,
* une clé par champ relié à une clé primaire d'une autre table.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 27-06-2003 à 10:13:28    

G pas tout suivi là !!
 
les champs d'une ont une clé primaire ca je m'en doute masi , un clé par table la je vois pas !  :(  explication pleazzzzzzzzzz)

Reply

Marsh Posté le 27-06-2003 à 10:16:12    

ben c'est simple, le meilleur moyen d'accélérer l'accès à un enregistrement d'une table, c'est d'avoir une clé primaire (qui est donc un index).
 
Mais quand je dis une clé par table, c'est le minimum, pas le maximum hein :o


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 27-06-2003 à 10:23:27    

aaaaaaaaaahhhhhhhhhh !!
 
ouais c'est sur , ça me semblait tellement évident que je ne n'avais meme pas suivi le résonnement
 
merci

Reply

Marsh Posté le 27-06-2003 à 12:57:30    

Perso j'ai pas bien compris l'histoire des PRIMARY KEY :??:


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 27-06-2003 à 13:04:39    

Max Evans a écrit :

Perso j'ai pas bien compris l'histoire des PRIMARY KEY :??:


la primary key est un index, sur un ou des champs qui ne peuvent contenir la valeur null.  Et son rôle est d'idendifier de manière unique chaque enregistrement de la table pour laquelle est créée la primary key.
 
Ou t'as pas compris autre chose? :??:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 27-06-2003 à 13:08:26    

drasche a écrit :


la primary key est un index, sur un ou des champs qui ne peuvent contenir la valeur null.  Et son rôle est d'idendifier de manière unique chaque enregistrement de la table pour laquelle est créée la primary key.
 
Ou t'as pas compris autre chose? :??:


 
Nop c'est bien ca que j'avais pas compris ;)
Mais sinon, le PRIMARY KEY, il faut le mettre sur l'ID de l'enregistrement ? :)
 
Encore merci ;)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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