PHP, d'un serveur à un autre...

PHP, d'un serveur à un autre... - PHP - Programmation

Marsh Posté le 31-01-2006 à 09:42:06    

Bonjour,
Je possède une base mysql sur un serveur que je dois interroger depuis un autre serveur.
Malheureusement ce second serveur autorise les connections distantes uniquement sans identification, ce que je veux absolument éviter (sécurité...).
 
Quelle serait la meilleure solution ?
J'ai pensé à interroger la base en local sur le premier serveur et envoyer la réponse au second, avec un flux rss par exemple, mais n'y connaissant rien je préfère demander s'il n'y a pas un moyen plus simple auquel je n'aurais pas pensé.
 
merci d'avance  :)


Message édité par darkendorf le 31-01-2006 à 12:17:09
Reply

Marsh Posté le 31-01-2006 à 09:42:06   

Reply

Marsh Posté le 31-01-2006 à 10:40:31    

non ?
hem... alors, serait-il possible de faire passer le résultat de ma requête sql dans une variable $_POST[] et de la récupérer sur mon second serveur ?
ça me semble plus rapide ;)

Reply

Marsh Posté le 31-01-2006 à 11:06:04    

Je comprends pas trop l'architecture de ton truc :D
 
Pourquoi est-ce que tu ne fais pas une sorte de "Webservice"? Tes pages sur le 2eme serveur appèlent des pages sur le 1er avec les bons paramètres et ça te renvoie les résultats ( le tout sous forme d'échange de flux XML histoire que ça soit drole).
Et si tu galères un peu sur les passages de params en POST tu peux toujours te servir de curl


Message édité par anapajari le 31-01-2006 à 11:06:30
Reply

Marsh Posté le 31-01-2006 à 11:16:32    

en fait je cherche à faire ça vite :p
je dois faire une requête sur ma ma base avec juste un paramètre genre l'id, et en récupérer le résultat (sous forme de tableau).
le plus rapide = le mieux.
donc y'a-t-il un moyen de récupérer mon résultat en variable post (pas get !) ou même carrément la variable php ? (on peut rêver ;))

Reply

Marsh Posté le 31-01-2006 à 11:31:34    

Un truc qu'il faut que tu comprennes c'est que les deux serveurs ne peuvent pas "communiquer entre eux" en php. ça reste du classique "Je demande un truc à mon serveur, il me retourne un flux".
Généralement ce flux est de l'html à afficher dans le navigateur, puisque c'est un navigateur qui demande la page.
Ton cas est un peu plus compliqué, c'est "un serveur" qui demande le resultat d'une page à un autre. Il n'empeche le resultat sera quand même un flux, impossible de conserver les variables d'un serveur à l'autre.
 
Donc voila comment je ferais...
Sur ton serveur ou se trouve la base tu fais un script qui prends un paramètre (ID), qui execute la requete avec celui-ci et qui retourne un flux XML ( parce que je préfère bosser avec et que c'est plus facile pour les tableaux, mais si ça te plait retourne un fichier texte ou ce que tu voudras. L'important c'est d'arriver à le parser facilement).
 
Sur ton serveur distant, tu utilises curl, tu appeles la page créée juste avant avec le bon paramètre ( en post, en get comme tu veux tu peux tout faire avec curl). Ce script va récuperer le flux retourné et tu parses ce flux pour recréer tes variables comme tu veux.
 

Reply

Marsh Posté le 31-01-2006 à 11:37:10    

Okiii, donc je ne peux m'extraire du xml. ok.
 
Donc un flux rss (plus simple et me convient amplement) serait appréciable.
Existe-t-il une librairie intégrée par défaut à php permettant de créer et parser ceci sans avoir à activer un module php ? (le fameux serveur refusant d'interroger une base distante et vérouillé avec peu d'options... une m***e absolue)

Reply

Marsh Posté le 31-01-2006 à 11:44:52    

DOM c'est le mieux.
Maintenant si c'est pour faire super simple et que tu as PHP5 simpleXML peut-être suffisant
 
Mais encore un fois le XML n'a rien d'obligatoire, tu peux déjà commencer par un fichier texte!!!

Reply

Marsh Posté le 31-01-2006 à 11:45:30    

j'ai trouvé ceci:
 
Serveur BD

Code :
  1. print($ligne1."\n" );
  2. print($ligne2);


dans mon script sur le serveur avec base de donnée
 
 
Serveur 'client'

Code :
  1. $arrstr = file('http://ma/page/requête/sur/serveur/distant.php');


 
qui me récupère une table donc que je peux interroger ainsi :
 

Code :
  1. $ligne1 = $arrstr[1];


 
cela me semble une bonne alternative assez rapide, est-ce que c'est valide ?


Message édité par darkendorf le 31-01-2006 à 11:46:47
Reply

Marsh Posté le 31-01-2006 à 11:54:11    

oui ça marche aussi mais par contre tu pourras pas passer tes variables en post, seuleument en get!!!

Reply

Marsh Posté le 31-01-2006 à 11:58:29    

mon but : faire vite ;)
 
donc : ça ira !!!
 
pour éviter les problèmes, je vais juste tester qui appelle ma page, si c'est mon script, depuis le bon serveur : je répond, sinon je redirige : affaire résolue.
Un grand merci pour m'avoir aiguillé.
 
je garde vos réponses sous le bras, je vais bien me mettre au xml un jour :)

Reply

Marsh Posté le 31-01-2006 à 11:58:29   

Reply

Marsh Posté le 31-01-2006 à 12:18:27    

la bonne blague :
Warning: file(): URL file-access is disabled in the server configuration
 
je commence à l'avoir mauvaise avec ces c****rds
 
cela risque de me bloquer plein d'autre solutions avec j'ai l'impression...

Reply

Marsh Posté le 31-01-2006 à 13:24:28    

ma solution avec curl marche toujours :o

Reply

Marsh Posté le 31-01-2006 à 14:44:26    

curl n'est pas inclus, et bien évidemment ne peux pas l'être...
 
DOM y est par contre !
je potasse ça, mais si t'as un exemple succint ça m'aiderait car comme je le disais plus tôt, il me faut faire ça... au plus vite...
 
mon problème ici, c'est que je ne peux pas appeler une page distante (file désactivé), donc je ne peux pas appeler mon script générant mon xml...

Reply

Marsh Posté le 31-01-2006 à 14:53:34    

je crois qu'il va me falloir repenser mon tout...
 
je te décris mon application :
 
sur le fameux serveur de m**** je dois :
- vérifier les pages existantes dans un dossier
- vérifier en base les pages qu'il me faut générer
- comparer entre existant/base
- supprimer les pages périmées
- ajouter les nouvelles pages
- créer un fichier qui liste toutes les pages existantes
 
tout cela fonctionnait (en locale) jusqu'à ce que je me rende compte que je ne pouvais interroger ma base distante depuis ce serveur...
 
je suis donc obligé de partager mon 'application' pour obtenir le même résultat :
- l'interrogation doit se faire sur un serveur quelconque mais pas sur celui qui en a besoin... bien sûr... donc le mieux c'est sur le serveur de  bases de données directement.
- la vérification et la modification des fichiers doit bien entendu se faire sur le serveur de m... (je me répète ? :p)
 
... c'était tout simple au début... sniff.


Message édité par darkendorf le 31-01-2006 à 14:54:09
Reply

Sujets relatifs:

Leave a Replay

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