Supposons qu'il existe 10 sites Web répartis à différents endroits. Leurs inventaires doivent être synchronisés, mais la base de données ne prend pas en charge les connexions à distance.
Si nous voulons obtenir l'inventaire du serveur en temps réel, nous pouvons utiliser de nombreuses méthodes, celles que je connais sont les suivantes :
· Méthode CURL
· Méthode SOCKET
· Méthode SOAP en PHP5
Des exemples sont donnés ci-dessous pour l'implémenter :
Méthode CURL
client. .php
<?php
$psecode = 'NDE005';
$site Web = 'www.abc.com';
montant $ = 1 ;
$pwd = 123456 ;
$ch = curl_init();
$curl_url = " http://ics1.server.com/index.php?web = " $site Web .
"&pwd=" .
"&montant=" .
curl_setopt($ch, CURLOPT_URL, $curl_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//Ne pas sortir directement, retourner à la variable
$curl_result = curl_exec($ch);
$result = exploser(',', $curl_result);
curl_close($ch);
print_r($résultat);
?>
Le serveur n'a besoin de sortir que dans un certain format, puis le client peut recevoir dans ce format, tel que :
echo
"
OK," .
Cela nécessite l'aide de La bibliothèque de classes tierce HttpClient peut être téléchargée ici : http://scripts.incutio.com/httpclient/
<?php
require_once 'class/HttpClient.php';
$params = array('web' => 'www.abc.com',
'mot de passe' => '123456',
'action' => 'vérifier',
'pseid' => 'NDE005',
'montant' => 1);
$pageContents = HttpClient::quickPost('http://ics.server.com/index.php', $params);
$result = exploser(',', $pageContents);
print_r($résultat);
?>
Mode SOAP en PHP5
server.php
<?php
fonction getQuote($fpsecode) {
global $dbh ;
$résultat = tableau();
essayer {
$query = "SELECT fprice, fcansale, fbalance, fbaltip FROM tblbalance où upper(trim(fpsecode)) = :psecode limit 1";
$stmt = $dbh->prepare($query);
$stmt->execute(array(':psecode' => strtoupper(trim($fpsecode))));
$stmt->bindColumn('fprice', $fprice);
$stmt->bindColumn('fcansale', $fcansale);
$stmt->bindColumn('fbalance', $fbalance);
$stmt->bindColumn('fbaltip', $fbaltip);
while($row = $stmt->fetch(PDO_FETCH_BOUND)) {
//
}
} catch (PDOException $e) {
echo $e->getMessage();
}
return $fprice; //Vous pouvez renvoyer un tableau
}
$dsn = 'pgsql:host=192.168.*.* port=5432 nom de base de données=utilisateur de base de données=123456 mot de passe=123456';
essayer {
$dbh = nouveau PDO($dsn);
} catch (PDOException $e) {
die('Échec de la connexion : ' . $e->getMessage());
}
ini_set("soap.wsdl_cache_enabled", "0"); // désactivation du cache WSDL
$server = new SoapServer("stockquote.wsdl"); //Fichier de configuration
$server->addFunction("getQuote");
$serveur->handle();
?>
stockquote.wsdl
<?version xml ='1.0' encodage ='UTF-8' ?>
<définitions nom='StockQuote'
targetNamespace='http://example.org/StockQuote'
xmlns:tns=' http://example.org/StockQuote '
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
xmlns='http://schemas.xmlsoap.org/wsdl/'>
<nom du message='getQuoteRequest'>
<part name='symbol' type='xsd:string'/>
</message>
<nom du message='getQuoteResponse'>
<part name='Result' type='xsd:float'/>
</message>
<nom du type de port='StockQuotePortType'>
<nom de l'opération='getQuote'>
<input message='tns:getQuoteRequest'/>
<output message='tns:getQuoteResponse'/>
</opération>
</portType>
<binding name='StockQuoteBinding' type='tns:StockQuotePortType'>
<soap:style de liaison='rpc'
transport='http://schemas.xmlsoap.org/soap/http'/>
<nom de l'opération='getQuote'>
<soap:operation soapAction='urn:xmethods-delayed-quotes#getQuote'/>
<entrée>
<soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</entrée>
<sortie>
<soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</sortie>
</opération>
</binding>
<nom du service='StockQuoteService'>
<nom du port='StockQuotePort' liaison='StockQuoteBinding'>
<soap:address location='http://192.168.3.9/php5/server.php'/>
</port>
</service>
</définitions>
client.php
<?php
$client = new SoapClient("stockquote.wsdl");
$result = $client->getQuote("nde005");
print_r($résultat);
?>