สมมติว่ามี 10 เว็บไซต์กระจายอยู่ในสถานที่ต่างๆ สินค้าคงคลังของเว็บไซต์เหล่านั้นจำเป็นต้องซิงโครไนซ์ แต่ฐานข้อมูลไม่รองรับการเชื่อมต่อระยะไกล
หากเราต้องการรับสินค้าคงคลังของเซิร์ฟเวอร์แบบเรียลไทม์ เราสามารถใช้วิธีต่างๆ มากมายดังต่อไปนี้:
· วิธี CURL
· วิธี SOCKET
· วิธี SOAP ใน PHP5
มีตัวอย่างด้านล่างเพื่อนำไปใช้:
ไคลเอนต์
วิธี CURL
.php
<?php
$psecode = 'NDE005';
$เว็บไซต์ = 'www.abc.com';
$amt = 1;
$pwd = 123456;
$ch = curl_init();
$curl_url = " http://ics1.server.com/index.php?web = "
"&pwd=" . $pwd "&action=check&pseid=" .
"&amt=" . $amt;
curl_setopt($ch, CURLOPT_URL, $curl_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//อย่าส่งออกโดยตรง, กลับไปยังตัวแปร
$curl_result = curl_exec($ch);
$result = ระเบิด(',', $curl_result);
curl_close($ch);
print_r($ผลลัพธ์);
?>
สามารถ
รับ
ในรูปแบบนี้ เช่น:
echo "OK" . $fpsecode "," .
สิ่งนี้ต้องการความช่วยเหลือจากไลบรารีคลาสบุคคลที่สาม HttpClient สามารถดาวน์โหลดได้ที่นี่: http://scripts.incutio.com/httpclient/
<?php
need_once 'คลาส/HttpClient.php';
$params = array('web' => 'www.abc.com',
'pwd' => '123456',
'การกระทำ' => 'ตรวจสอบ',
'pseid' => 'NDE005',
'amt' => 1);
$pageContents = HttpClient::quickPost('http://ics.server.com/index.php', $params);
$result = explode(',', $pageContents);
print_r($ผลลัพธ์);
?>
โหมด SOAP ใน
เซิร์ฟเวอร์
PHP5.php<?php
ฟังก์ชั่น getQuote($fpsecode) {
$dbh ทั่วโลก;
$ผล = อาร์เรย์();
พยายาม {
$query = "เลือก fprice, fcansale, fbalance, fbaltip จาก tblbalance โดยที่ upper(trim(fpsecode)) = :psecode จำกัด 1";
$stmt = $dbh->เตรียม($แบบสอบถาม);
$stmt->execute(array(':psecode' => strtoupper(trim($fpsecode)))));
$stmt->bindColumn('fprice', $fprice);
$stmt->bindColumn('fcansale', $fcansale);
$stmt->bindColumn('fbalance', $fbalance);
$stmt->bindColumn('fbaltip', $fbaltip);
ในขณะที่($row = $stmt->ดึงข้อมูล(PDO_FETCH_BOUND)) {
-
-
} จับ (PDOException $e) {
เสียงสะท้อน $e->getMessage();
-
return $fprice; // คุณสามารถคืนค่าอาร์เรย์ได้
}
$dsn = 'pgsql:host=192.168.*.* พอร์ต=5432 dbname=db user=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");
$เซิร์ฟเวอร์->จัดการ();
?>
stockquote.wsdl
<?xml version ='1.0' encoding ='UTF-8' ?>
<ชื่อคำจำกัดความ = '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/'>
<ชื่อข้อความ='getQuoteRequest'>
<ชื่อชิ้นส่วน='สัญลักษณ์' ชนิด='xsd:สตริง'/>
</ข้อความ><
<ชื่อข้อความ='getQuoteResponse'>
<ชื่อชิ้นส่วน=ชนิด 'ผลลัพธ์'='xsd:float'/>
</message>
< <portType name='StockQuotePortType'>
<ชื่อการดำเนินการ='getQuote'>
<input message='tns:getQuoteRequest'/>
<ข้อความขาออก='tns:getQuoteResponse'/>
</การทำงาน><
</portType>
<binding name='StockQuoteBinding' type='tns:StockQuotePortType'>
<soap:binding style='rpc'
ขนส่ง='http://schemas.xmlsoap.org/soap/http'/>
<ชื่อการดำเนินการ='getQuote'>
<soap:operation soapAction='urn:xmethods-delayed-quotes#getQuote'/>
<อินพุต>
<soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</อินพุต>
<เอาท์พุต>
<soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</เอาท์พุต>
</การทำงาน><
</binding>
< <ชื่อบริการ='StockQuoteService'>
<ชื่อพอร์ต='StockQuotePort' ผูก='StockQuoteBinding'>
<สบู่: ตำแหน่งที่อยู่='http://192.168.3.9/php5/server.php'/>
</พอร์ต><
</บริการ><
</คำจำกัดความ>
client.php
<?php
$ลูกค้า = ใหม่ SoapClient("stockquote.wsdl");
$result = $client->getQuote("nde005");
print_r($ผลลัพธ์);
?