MyRemoteSql fournit un WebService utilisant le protocole SOAP. Ce WebService permet d'exécuter une requête SQL sur N Serveurs. Le client peut être écrit en Php, Python, Java ... tout langage implémentant le protocole SOAP.
Localisation : http://AdresseduServeur/myremotesql/ws_mrssoap.php
Fonction distante :
function wsExecuteSql($pTxtSql,$pServeurs,$pTypeSortie,$pPreSortie)
Arguments :
$pTxtSql : string requête SQL
$pServeurs : array tableau des serveurs au format (No Id serveur; nom serveur;ip ou nom serveur;port mysql;nom de base;utilisateur;mot de passe;)
$pTypeSortie : string type de sortie XML, HTML, CSV, Texte
$pPreSortie : string type de présentation de sortie S-SQL ou SQL-S
Retour : un tableau contenant la sortie
// Librairie nusoap
include('Lib/nusoap.php');
// définition de la liste des serveurs à traiter
$listServeurs = array();
$listServeurs[]="1;Mysql Local;localhost;3306;test;root;;";
$listServeurs[]="2;Mysql Local de test;localhost;3306;test;root;;";
// définition de l'Url du Webservice
$urlWebService = 'http://127.0.0.1/test/myremotesql/ws_mrssoap.php';
// définition de la requête SQL à exécuter (Select, Insert ...)
$txtSql = "show tables";
// définition du type de sortie
$typeSortie = "XML";
// définition des parametres du Webservice (Requete SQL, Liste de serveurs, type de sortie)
$param = array('pTxtSql' => $txtSql, 'pServeurs' => $listServeurs, 'pTypeSortie' => $typeSortie, 'pPreSortie'=> $preSortie);
// Création du client SOAP
$client = new soapclient($urlWebService);
// Appel de la fonction distante
$result = $client->call('wsExecuteSql', $param);
// Erreur ?
if($client->fault)
{
print "Erreur ".$result['faultcode'] ." ". $result['faultstring'];
}
// affichage BRUT du résultat
var_dump($result);
// Exploitation du résultat ...
//
MyRemoteSql fournit un WebService utilisant le protocole XML-RPC. Ce WebService permet d'exécuter une requête SQL sur N Serveurs. Le client peut être écrit en Php, Python, Java ... tout langage implémentant le protocole XML-RPC.
Localisation : http://AdresseduServeur/myremotesql/ws_mrsxmlrpc.php
Fonction distante :
function wsExecuteSql($pTxtSql,$pServeurs,$pTypeSortie)
Arguments :
$pTxtSql : string requête SQL
$pServeurs : array tableau des serveurs au format (No Id serveur;nom serveur;ip ou nom serveur;port mysql;nom de base;utilisateur;mot de passe;)
$pTypeSortie : string type de sortie XML, HTML, CSV, Texte
$pPreSortie : string type de présentation de sortie S-SQL ou SQL-S
Retour : un tableau contenant la sortie
Rebol [ title: "Exemple de client Xml-RPC à adapter" auteur: "myRemoteSql" commentaires: "Utilise Rebol + librairies XML-RPC" ] ; Includes des librairies XML-RPC do %Lib/xml-object.r do %Lib/xml-parse.r do %Lib/xmlrpc-client.r do %Lib/xmlrpc-marshaler.r do %Lib/xml-writer.r ; ; Définition le la Requête SQL txtSql: "show databases" ; Définition du type de Sortie typeSortie: "XML" ; Définition de la présentation de Sortie preSortie: "S-SQL" ; Définition de l'Url du webService, à modififier url: make url! http://127.0.0.1/myremotesql/ws_mrsxmlrpc.php ; Définition de la liste des serveurs : peut-être récupérée d'un fichier, d'une table ... listServeurs: make hash! ["Serveur 1" "1;Serveur 1;localhost;3306;test;root;;" "Serveur 2" "2;Serveur2;localhost;3306;test;root;;"] ; Connexion au Webservice remote: make xmlrpc-client [] remote/set-server url ; Mode Debug : mettre à true ;remote/set-debug true ; Récup de la liste des méthodes du WebServices print remote/exec [system.listMethods] ; Appel de la fonction distante resultat: remote/exec [mrs.wsExecuteSql txtSql listServeurs typeSortie preSortie] ; Affichage du résultat brut, le résultat est un Hash! print resultat ; Exploitation du résultat ... à personnaliser ... Mise à jour IHM, SGBD, Fichier, Mail ... write %result.txt resultat ; ; Fin programme : arrêt + Quit Input quit