さまざまな場所に分散した 10 個の Web サイトがあり、それらのインベントリを同期する必要があるが、データベースはリモート接続をサポートしていないとします。
サーバーのインベントリをリアルタイムで取得したい場合、私が知っている方法は次のとおりです。
· CURL メソッド
· SOCKET メソッド
· PHP5 での
実装例を以下に示します
。CURL メソッド
クライアント。 .php
<?php
$psecode = 'NDE005';
$website = 'www.abc.com';
$amt = 1;
$pwd = 123456;
$ch =curl_init();
$curl_url = " http://ics1.server.com/index.php?web = " 。
「&pwd= . $pwd= . $pseid=」
"&amt= . $amt;
curl_setopt($ch, CURLOPT_URL, $curl_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURTRANSFER, 1);//直接出力せず、変数に戻ります
$curl_result =curl_exec($ch);
$result =explode(',', $curl_result);
カール_クローズ($ch);
print_r($result);
?>
サーバーは特定の形式で出力するだけでよく、クライアントはこの形式で受信できます (例:
echo "OK," . $fbalance ;//
SOCKET モード
ではカンマを区切る)。これには、サードパーティのクラス ライブラリ HttpClient の助けが必要です。http: //scripts.incutio.com/httpclient/
<?php
からダウンロードできます。
require_once 'class/HttpClient.php';
$params = array('web' => 'www.abc.com',
'pwd' => '123456',
'アクション' => 'チェック'、
'psid' => 'NDE005',
'amt' => 1);
$pageContents = HttpClient::quickPost('http://ics.server.com/index.php', $params);
$result =explode(',', $pageContents);
print_r($result);
?>
PHP5 の SOAP モード
server.php
<?php
関数 getQuote($fpsecode) {
グローバル $dbh;
$result = 配列();
試す {
$query = "SELECT fprice, fcansale, fbalance, fbaltip FROM tblbalance where 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)) {
//
}
} キャッチ (PDOException $e) {
echo $e->getMessage();
}
return $fprice //配列を返すことができます。
$
dsn = 'pgsql:host=192.168.*.* ポート=5432 dbname=db ユーザー=123456 パスワード=123456';
試す {
$dbh = 新しい PDO($dsn);
} キャッチ (PDOException $e) {
die('接続に失敗しました: ' . $e->getMessage());
}
ini_set("soap.wsdl_cache_enabled", "0"); // WSDL キャッシュを無効にする
$server = new SoapServer("stockquote.wsdl"); // 設定ファイル
$server->addFunction("getQuote");
$server->ハンドル();
?>
stockquote.wsdl
<?xml バージョン ='1.0' エンコーディング ='UTF-8' ?>
<定義名='株価情報'
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/'>
<メッセージ名='getQuoteRequest'>
<part name='symbol' type='xsd:string'/>
</メッセージ>
<メッセージ名='getQuoteResponse'>
<part name='Result' type='xsd:float'/>
</message>
<portType名='StockQuotePortType'>
<操作名='getQuote'>
<入力メッセージ='tns:getQuoteRequest'/>
<出力メッセージ='tns:getQuoteResponse'/>
</操作>
</portType>
<バインディング名='StockQuoteBinding' タイプ='tns:StockQuotePortType'>
<soap:binding style='rpc'
Transport='http://schemas.xmlsoap.org/soap/http'/>
<操作名='getQuote'>
<soap:operationsoapAction='urn:xmethods-layed-quotes#getQuote'/>
<入力>
<soap:body use='encoded' namespace='urn:xmethods-layed-quotes'
codingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</入力>
<出力>
<soap:body use='encoded' namespace='urn:xmethods-layed-quotes'
codingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</出力>
</操作>
</binding>
<サービス名='StockQuoteService'>
<ポート名='StockQuotePort' バインディング='StockQuoteBinding'>
<soap:address location='http://192.168.3.9/php5/server.php'/>
</ポート>
</サービス>
</定義>
client.php
<?php
$client = new SoapClient("stockquote.wsdl");
$result = $client->getQuote("nde005");
print_r($result);
?>