Communication entre plusieurs bases

Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008
- - Dernière réponse : 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
Afficher la suite 

18 réponses

Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
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.
Commenter la réponse de malalam
Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008
0
Merci
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
Commenter la réponse de rttb
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
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.
Commenter la réponse de malalam
Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008
0
Merci
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
Commenter la réponse de rttb
Messages postés
366
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
17 avril 2008
0
Merci
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
Commenter la réponse de kishkaya
Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008
0
Merci
Soit,
Je teste ça desuite...
Commenter la réponse de rttb
Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008
0
Merci
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
Commenter la réponse de rttb
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13
0
Merci
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 ;)
Commenter la réponse de neigedhiver
Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008
0
Merci
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 ....
Commenter la réponse de rttb
Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008
0
Merci
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...
Commenter la réponse de rttb
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13
0
Merci
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)
Commenter la réponse de neigedhiver
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
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.
Commenter la réponse de malalam
Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008
0
Merci
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...
Commenter la réponse de rttb
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
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.
Commenter la réponse de malalam
Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008
0
Merci
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.
Commenter la réponse de rttb
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
ah ben ça oui...il y a CURL, SOAP...ou une attaque directe en POST ou GET justement.
Voire même en Ajax.
Commenter la réponse de malalam
Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008
0
Merci
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.
Commenter la réponse de rttb
Messages postés
48
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
9 mai 2011
0
Merci
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...
Commenter la réponse de rethenor