Help - Search - Member List - Calendar
Full Version: Mutualiser les versions 2.XXX (une mod ?)
IPBR-FR > Divers > Documentation > Soumettez vos astuces ou tutoriels
magic.mimi
Ayant mutualisé sans problème la 1.3 et ce sur 3 forums... Je viens vous préciser que cette mutualisation fonctionne aussi sur la 2.XX ....

Le sujet d'origine sur la mutualisation de la 1.3 se trouve sur ibf . Ayant conversé avec Gilles dernièrement suite à un problème sur un sujet ou je parlais de ce sujet de mutualisation , il me disait qu'il songeait a supprimer les quelques sujets et forum "mod" se trouvant la-bas. Je viens donc donné ici la copie de la façon de mutualiser la 2.xxx . (le fichier de référence étant différent de la 1.3, j'ai fait les modifs dans le sujet d'origine)

Je l'ai fait et cela fonctionne... Le sujet d'origine a été posté par "dash"

-----------------------------------------------------------------------------------
Puisque plusieurs personnes le demandent, re-voici commnent faire pour mutualiser plusieurs forums.

AVERTISSEMENT: si vous ne comprennez pas les explications qui suivent, ou si vous ne savez pas ce que vous faites : abstenez-vous



Objectif :


* mutualiser plusieurs forums IPB, c'est à dire, partager, mettre en commun certaines tables SQL.


pre-requis :
* les forums utilisent les memes tables (cad meme version)
* les forums utilisent tous la meme base de donnees (meme serveur, meme db, meme login, meme passwd, mais differents prefixes de tables).
* le forum de reference sera designe ici par "forum maitre"
* les forums annexes seront designes ici par "forums esclaves" : il faudra modifier leur code source pour les faire dependre du "forum maitre"
* je suppose que le prefixe des tables utilises par le "forum maitre" est "ibf_"
* je suppose que les prefixes des tables utilises par les "forums escalves" sont differents de "ibf_" (prefixe reserve pour le "forum maitre")


étapes :
1°/ reperez les tables que vous voulez synchroniser (aidez vous du dictionnaire des donnees au besoin)
2°/ Pour chaque "forum esclave", ouvrez le fichier ./ips_kernel/class_db_mysql.php
et trouvez le code :

QUOTE
if ( $this->obj['sql_tbl_prefix'] != "ibf_" and ! $this->prefix_changed )
   {
      $the_query = preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->obj['sql_tbl_prefix']."\\1\\2", $the_query);
   }


ajoutez, le code en rouge :

QUOTE
if ( $this->obj['sql_tbl_prefix'] != "ibf_" and ! $this->prefix_changed )
   {
      $the_query = preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->obj['sql_tbl_prefix']."\\1\\2", $the_query);
   }
$common_tables=array('members', 'member_extra', 'pfields_data', 'pfields_content');
         $sql_tbl_prefix_reference= 'ibf_';
         foreach ($common_tables as $table)
         if ( strpos($the_query, $this->obj['sql_tbl_prefix'].$table) )
         {
            $the_query = preg_replace("/".$this->obj['sql_tbl_prefix'].$table."/", $sql_tbl_prefix_reference.$table, $the_query);
         }


3°/ adaptez selon vos objectifs de synchronisation : il vous suffit de mettre dans le tableau $common_tables toutes les tables (sans prefixe) du "forum maitre" à partager.

4°/
CODE
$sql_tbl_prefix_reference= 'ibf_';
n'oubliez pas de changer le préfixe de la table du forum maître si besoin. Chez moi : ibf3_

4°/ repetez cette modification pour chaque "forum esclave", enregistrez, uploadez.

5°/ dites merci (à Dash)

conclusion :

C'est a vous a adapter $common_tables pour determiner quelles tables du "forum maitre" vous voulez partager avec les "forums esclaves".

En tenant compte des relations existants entre les tables. Par exemple, si vous mutualisez ibf_forums, et pas ibf_topics, vous provoquerez des incohenrences, et ainsi de suite.
Bref, si vous ne savez pas vous y prendre : abstenez-vous

Je n'ai pas teste ce principe de mutualisation : inutile de me demander du support.
Vous avez a votre disposition : ces explications, un descriptif des tables SQL, la base de Connaissance, etc. Si tout cela ne vous suffit pas, c'est tant pis pour vous.
Merci de votre comprehension .

---------------------------------------------------------------------

Note de jean-mi : A quoi peut servie cette mutualisation ? A avoir plusieurs pages d'index pour un seul forum. La version 2.0 ne permettant pas d'avoir plusieurs catégories dans un sous forum.
Voir mes sites :

Créacroque

Croquelavie

ces deux forums partage (pour l'instant) :
CODE
'members', 'member_extra', 'membre_converge', 'admin_logs', 'admin_sessions', 'sessions ', 'groups', 'shoutbox', 'shoutbox_colors','shoutbox_exports', 'shoutbox_ignored', 'shoutbox_savedshouts', 'shoutbox_settings', 'shoutbox_stats', 'links', 'links_cats', 'links_comments', 'links_ratings',


J'ai donc récemment mutualisé aussi la shoutbox et la mod "links" ça marche impeccable !

-----------------------------------------------------------------------

Le sujet d'origine pour mutualiser la 1.3 :

C'est ICI sur I.B.F


jean-mi
Melkendar
Vous avez reçu l'autorisation de dash pour publier le tutoriel?
magic.mimi
QUOTE(Melkendar @ lundi 28 mars 2005 à 10:56)
Vous avez reçu l'autorisation de dash pour publier le tutoriel?
*




Non je lui ai pas demandé ! si c'est juste le tuto, je peux le réécrire ! Je signale que j'ai bien marqué que c'était de lui ! Et, sur i.b.f veulent plus parler des mods ! De plus, je l'ai modifié pour l'adapter au 2.0 !

Lui, quant il me fait des m.p, il dit "tu m'em....e " Ou quand un sujet le gène, il le ferme et même l'efface ! Perso, j'ai donc bien essayé de parler avec lui ... mellow.gif

Bon alors je fais quoi ? Je le réécris ce tuto ? Et puis j'aimerais qu'on le mette dans les "mod"
Car c'est bien une mod !


jean-mi
Fabien
Intéressant ce tuto. smile.gif

Je déplace dans le bon forum.
Melkendar
Désolé mais pas d'affichage du tuto sans l'autorisation de dash wink.gif
magic.mimi
QUOTE(Melkendar @ lundi 28 mars 2005 à 21:15)
Désolé mais pas d'affichage du tuto sans l'autorisation de dash wink.gif
*




Bon ok, je le refais dans la journée !

ps : il l'a mis sur un forum public et il n'est pas indiqué de réserve.

jean-mi
Melkendar
Oui mais la politesse élémentaire srait de le prévenir et de lui demander son accord wink.gif
Melkendar
Autorisation accordée.
magic.mimi
QUOTE(Melkendar @ mercredi 30 mars 2005 à 09:31)
Autorisation accordée.
*



Ok merci d'avoir fait la demande ! vu que c'est 'tendu' entre lui et moi, je crois que c'est mieux comme cela ! Et puis au moins, on sait qui est là l'origine du sujet .

Jean-mi qui n'a jamais volé personne ! cool.gif
jona
Petite question cela permet t'il de partager les membres entre plusieurs forums ?

Genre :
A: ton forum 1 ayant pour adresse www.monsite/forum1 , www.monsite/forum2, www.monsite/forum3 etc...
B: ton forum1 ayantpour adresse forum1.monsite.com, forum1.monsite.com, forum3.monsite.com
c: ton forum1 ayant pour adresse www.monsite1.com/forum1, www.monsite2.com/forum2, www.monsite3.com/forum3
Fantome
le principe est d'utilisé une seul base de donné pour les 3 forums donc tant que tu peut te connecté d'un forum sur la base de donnée d'un autre ça marche.
jona
QUOTE(Fantome @ mardi 12 juillet 2005 à 15:48)
le principe est d'utilisé une seul base de donné pour les 3 forums donc tant que tu peut te connecté d'un forum sur la base de donnée d'un autre ça marche.
*


Cela ne génére pas quelques soucis pour les skins s'ils sont différent ?

Par contre pour les mises à jours IPB se doit être un peu le bordel non ?

Sauf erreur IPB avait prévue un truc pour faire cela je me souvient plus le nom mais j'en ait pas vue la couleur sur leur site officiel.

L'un d'entre vous aurait il plusieur adresse de forum qui sont fait de la sorte que je me rende compte.
Fantome
en fait c'est la même base de donnée mais tu change le préfix des table pour chaque forum.

maitre: ibf_ (obligatoirement ibf_ sinon faut modifier le script)
esclave1: ipbr_
esclave2: in_

est donc le but est de rediriger, pour les tables qui concerne les membres, vert le forum maitre. donc les trois forum on des table indépandentes sauf pour les membres.

bon biensur ça peut possé des problème donc comme c'est écris si on sait pas ce q'on fais c'est mieux de s'abstenir.
dash
QUOTE(jona @ mercredi 13 juillet 2005 à 09:15)
Cela ne génére pas quelques soucis pour les skins s'ils sont différent ?

Par contre pour les mises à jours IPB se doit être un peu le bordel non ?
*



Pour sur, ce bricolage est un excellent moyen pour generer des problemes

1) des problemes d'administration :
- les skins doivent avoir des ID et des permissions compatibles
- les languages packs doivent avoir des ID et des permissions compatibles
- ...

toutes les donnees liees aux utilisateurs doivent exister en parallele sous peine de produire des erreurs


2) des problemes de maintenance et de mise a jour


Ce genre de modification ne "peut" pas poser de probleme. A ce stade, ce n'est pas une "possibilite", c'est une certitude.
Reste a savoir si vous etes capable d'assumer entierement les problemes lorsqu'ils se presenteront sur vos n-forums a la fois...
Fantome
le mieux c'est d'attendre phpStudio wink.gif
Folken
Petite questions smile.gif

j'ai tres bien compris le principe, et je vais m'y pencher tres prochainement.

Par contre, si par exemple, j'ai 5 forums distincts (ou les membres et les messages sont mutualiser)

Est il possible, de cree un forum style (bar, detente, annonce) commune au 5 forums ?
Je l'ai deja vu sur un phpBB, donc ca doit etre aussi possible ici.

Avez vous une idee ?

Est il preferable de mutualiser les messages ? (pour des forums de support)

Ceux qui ont tester cette methode, vos impressions ?

Merci beaucoup smile.gif
minirop
bonjour a tous,
je trouve que cette technique peux etre tres interessante.
quels sont les tables qui doivent obligatoirement etre ensemble ?
par exemple :
member, member_converge, groups
celle des post et des topics
...ect...

aussi je viens de trouver un truc, si on mutualise les sujets + messages, il faut modifier manuellement les id des forums sinon les messages seront melanger (ou mutualiser les forums et categories).

merci
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2012 Invision Power Services, Inc.