Communication entre plusieurs bases

rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008 - 3 nov. 2007 à 11:22
rethenor Messages postés 48 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 9 mai 2011 - 20 nov. 2007 à 17:01
Salut,
 
Je souhaite faire communiquer plusieurs bases entre elles ; par exemple :

- Inscription log et pass sur un site pilote

- Envoie de ces données vers d'autres sites pour insertion dans une base de données...

Bien sûr, les sites sont sur un autre hébergeur, un autre serveur, bref, n'ont rien en commun...

Peut-on passer des requêtes ou des variables de site à site

Je préfère ne pas utiliser la solution génération/lecture flux...

------------------------------------------------------------- Amicalement, rttb

18 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 nov. 2007 à 11:55
Hello,

où est le problème ? Tu définis tes paramètres de connexion et basta. Au pire tu instancies 2 objets DB avec chacun leur connexion (ou plus si plus de bdd), au mieux tu utilises un objet db intelligent capable de switcher entre tes bases.
0
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
3 nov. 2007 à 12:54
Salut,
Salut,
 Le problème est que les bases sont sur deux sites différents ; deux noms de domaine différents ; deux serveurs SQL différents ; deux hébergeurs différents...

-------------------------------------------------------------
Amicalement, rttb
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 nov. 2007 à 13:01
Ben oui...c'est bien ce que je dis ?
Tu dois avoir des paramètres de connexions différents et instancier ou définir tes connexions en fonction du contexte.
0
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
3 nov. 2007 à 13:55
Je suis largué là,


Tu me dis que je peux d'un site héberger chez free lire la bd d'un autre site hébergé chez ovh ???


Comment, c'est quoi instancier ?





------------------------------------------------------------- Amicalement, rttb
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008
3 nov. 2007 à 14:56
Bonjour,
Lorsque tu te connectes à une base de donnée, tu crées une ressource. Libre à toi de creer autant de ressource que tu veux. La nature de la base, Oracle, Mysql, SQl serveur, n'a pas d'importance.

$link1 = mysql_connect('ovh.com:3307', 'mysql_user', 'mysql_password');

$link2 = msql_connect('free.fr');


Tu peux trouver plus d'info sur les ressources en regardant la doc (tres bien faite) sur php.net.
_Marikou
0
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
3 nov. 2007 à 15:04
Soit,
Je teste ça desuite...
0
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
3 nov. 2007 à 15:33
La reponse : Can't connect to MySQL server

Je mets où l'info du serveur sql ?
en temps normal :
mysql_connect('nom_du_serveur', 'mysql_user', 'mysql_password');

Quelle est la syntaxe pour me connecter
sur
 www.mon_site.frhébergé en mutu chez ovh.com
serveur sql-3
user : moimeme
pass : monmotdepasse
bd : ma BD

Depuis www.mon-deuxieme-site-en-mieux.com
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
3 nov. 2007 à 15:58
Salut,

Malalam faisait référence à l'utilisation d'une classe d'abstraction d'accès à un SGBD. Il s'agit d'une classe qui permet de gérer l'accès à une base MySQL, PostgreSQL, Oracle, Access, MSSQL, SQL Server, etc.
C'est pour ça qu'il parlait d'instancier : il est dans une logique de Programmation Objet. Dans ce cas de figure, il te faut instancier la classe d'accès au SGBD deux fois : une fois pour chaque serveur.

Concernant la connexion pure, il faut faire attention que la connexion au serveur de base de données soit autorisée depuis un hôte distant. Concrètement, pour une base de données hébergée chez Free, tu ne pourras t'y connecter que depuis ton site perso Free (même login, même mot de passe).

Concernant ta base de données chez OVH, tout dépend de ton hébergement. Je ne connais pas la configuration d'un hébergement mutualisé OVH... Il se peut que tu puisses te connecter à ta base de données à distance, comme il se peut que tu ne puisses le faire que depuis le serveur qui l'héberge (typiquement localhost).

Si tu ne peux pas te connecter à ta base de données depuis un hôte distant, alors c'est mort, tu peux laisser tomber tout de suite.


Pour te connecter, quel que soit le serveur (free ou OVH) tu utiliseras la même fonction : mysql_connect.
La syntaxe est donnée dans la doc php.
Il te suffit de changer les paramètres selon la connexion... Et le nom de serveur itou.

Par exemple, ton sites hébergé chez Free va utiliser ta bdd free et ta bdd OVH.
Tu crées donc deux connexion :

$connexion1 = mysql_connect('localhost', 'ton_login_free', 'ton_pass_free', 'ta_base_free');

$connexion2 = mysql_connect('ton.site_ovh.com', 'ton_login_ovh', 'ton_pass_ovh', 'ta_base_ovh');

Tu pourras exécuter des requêtes sur les deux bases en spécifiant dans chaque fonction mysql la connexion à utiliser :

// Requête sur free :
$resultat1 = mysql_query('SELECT nom, prenom FROM membres', $connexion1);

// Requête sur OVH :
$resultat2 = mysql_query('SELECT nom, prenom FROM membres', $connexion2);

C'est, somme toute, relativement simple ;)
0
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
3 nov. 2007 à 16:22
Si tu ne peux pas te connecter à ta base de données depuis un hôte distant, alors c'est mort, tu peux laisser tomber tout de suite.

Je crois bien que ce soit le cas sur les mutu.

Je cherche un autre moyen justement, je peux générer un flux sur un site, puis le lire et l'intégrer dans la BD de l'autre, mais c'est lourd...

Je veux savoir si je peux envoyer un truc du style http://www.mon_site.fr/page_de_reception.php?id=2233&pas=sg5dfh à un site distant sur un script qui récupère en POST ou GET ....
0
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
4 nov. 2007 à 10:48
Il n'y a donc pas de solution si je ne peux pas me connecter la base de données depuis un hôte distant?

Comment vous faites sur le réseau codes-sources, tous vos sites sont sur le même serveur ??? étonnant...
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
4 nov. 2007 à 11:58
Salut,

Je ne connais pas la configuration exacte de codes-sources, mais un simple nslookup permet de voir qu'effectivement, les différents sites sont sur le même serveur.
Ca n'a en fait rien d'étonnant... C'est juste qu'il ne s'agit pas d'un hébergement mutualisé ! :o)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 nov. 2007 à 12:16
Hello,

de tte manière, ça dépend de ton hébergement. En dédié, tu ferais ce que tu veux. En mutualisé, tu es soumis aux règles dictées par ton hébergeur. Comparer CS et ton site n'est pas à mon avis la meilleure manière de comprendre, CS est un très, très gros portail possèdant un serveur dédié. Enfin, un...plusieurs, justement, la db n'est sûrement pas sur le même serveur. Si tant est qu'il n'y est qu'une seule db. Je ne connais pas non plus les détails de l'architecture de CS.

Notre serveur de prod au boulot me permet de nous connecter à n'importe quelle db distante, par exemple.
0
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
4 nov. 2007 à 16:57
Je n'ai en aucun cas comparé CS à mon site, je n'ai d'ailleurs cité aucun site.


Je faisais juste allusion au fait qu'une seule inscription est nécessaire pour tout le réseau, vu la taille de CS je suppose  (et je pense pas dire de bêtise) que derrière il y a plusieurs dédiés et plusieurs BD.


Il me parait évident que si j'avais un dédié je ferais ce que je veux avec...


Tout ce que je veux savoir c'est si je peux faire communiquer deux bases en mutu (donc pas d'accès distant) autrement qu'en générant du fichier cache d'un coté pour le lire de l'autre et alimenter ma base...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 nov. 2007 à 17:02
Ben renseigne-toi auprès de ton hébergeur, lui aura la réponse. S'il l'interdit, comme te le dit Neige, tu ne pourras rien faire.
0
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
4 nov. 2007 à 17:10
Mon hébergement ne tolère pas l'accès distant.


Mais je pensais qu'en PHP avec une fonction (en détournant peut-être son utilisation) on pouvait faire passer des paramètres par URL comme précisé quelques post plus tôt pour alimenter un autre site avec ces infos.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 nov. 2007 à 17:27
ah ben ça oui...il y a CURL, SOAP...ou une attaque directe en POST ou GET justement.
Voire même en Ajax.
0
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
5 nov. 2007 à 09:23
Tu peux développer un peu "ou une attaque directe en POST ou GET justement".
Quelle fonction PHP autorise l'accés distant, je connais fopen, fread,.. mais c'est pour lire.
0
rethenor Messages postés 48 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 9 mai 2011
20 nov. 2007 à 17:01
Bonjour,


Je ne sais encore comment vérifier en interrogeant sa base de données mais quand l'administrateur de bases de données crée le compte, il a la possibilité de désigner à partir d'où la base peut être interrogée en le spécifiant dans sa commande de création :


GRANT ALL PRIVILIGES ON Base.* TO [mailto:toto@localhost toto@localhost] IDENTIFIED BY "xxxxxx";
GRANT ALL PRIVILIGES ON Base.* TO [mailto:toto@192.168.0.10 toto@192.168.0.10] IDENTIFIED BY "xxxxxx";
GRANT ALL PRIVILIGES ON Base.* TO toto IDENTIFIED BY "xxxxxx";


Dans le 1er cas l'interrogation de la base ne peut se faire qu'à partir de la machine hébergeant le serveur
Dans le second qu'à partir de la machine 192.168.0.10 et dans le troisième à partir de n'importe où (équivalent à [mailto:user@% user@%]).


Chez l'hébergeur FREE c'est à partir de localhost uniquement. Chez AMEN c'est à partir de n'importe où.


Mais j'ai constaté que FREE est draconien sur la sécurité car ma base chez AMEN pouvant être consultée à partir de n'importe où (de chez moi avec la commande: "mysql --user=my00000 --password=XXXXXXXX --database=my00000 --host=mysql0.amenworld.com") ne peut l'être à partir d'un script déposé chez FREE.


Donc, vérifier pour tes connexions inter bases...
0
Rejoignez-nous