لنفترض أن هناك 10 مواقع ويب موزعة في أماكن مختلفة تحتاج إلى مزامنة قوائم الجرد الخاصة بها، لكن قاعدة البيانات لا تدعم الاتصالات عن بعد.
إذا أردنا الحصول على مخزون الخادم في الوقت الفعلي، فيمكننا استخدام العديد من الأساليب التي أعرفها هي التالية:
· طريقة CURL
· طريقة SOCKET
·أمثلة
على طريقة SOAP في PHP5:
عميل
طريقة CURL
فب
<؟ب
$psecode = 'NDE005';
$موقع الويب = 'www.abc.com';
$أمت = 1؛
$pwd = 123456;
$ch = curl_init();
$curl_url = " http://ics1.server.com/index.php?web = " $website .
"&pwd=" $pwd "&action=check&pseid=" .
"&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);
نتيجة $ = تنفجر(',', $curl_result);
تجعيد_إغلاق($ch);
print_r(نتيجة $);
?>
يحتاج الخادم فقط إلى الإخراج بتنسيق معين، ومن ثم يمكن للعميل الاستقبال بهذا التنسيق، مثل:
echo "OK," . $fbalance ;//فصل الفواصل في
وضع SOCKET
. يتطلب ذلك مساعدة مكتبة فئة الطرف الثالث HttpClient التي يمكن تنزيلها هنا: http://scripts.incutio.com/httpclient/
<?php
require_once 'class/HttpClient.php';
$params = array('web' => 'www.abc.com',
'الأشخاص ذوي الإعاقة' => '123456',
'الإجراء' => 'التحقق'،
'pseid' => 'NDE005',
'أمت' => 1);
$pageContents = HttpClient::quickPost('http://ics.server.com/index.php', $params);
$result =تفجير(',', $pageContents);
print_r(نتيجة $);
?>
وضع SOAP في PHP5
server.php
<?php
الدالة getQuote($fpsecode) {
عالمي $dbh;
نتيجة $ = مصفوفة () ؛
يحاول {
$query = "SELECT fprice, fcansale, fbalance, fbaltip FROM tblbalance Where Upper(trim(fpsecode)) = :psecode Limit 1";
$stmt = $dbh->تحضير($query);
$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->fetch(PDO_FETCH_BOUND)) {
//
}
} التقاط (PDOException $e) {
echo $e->getMessage();
}
return $fprice; // يمكنك إرجاع مصفوفة
}
$dsn = 'pgsql:host=192.168.*.* port=5432 dbname=db user=123456 كلمة المرور=123456';
يحاول {
$dbh = شركة تنمية نفط عمان الجديدة($dsn);
} التقاط (PDOException $e) {
die('فشل الاتصال:' . $e->getMessage());
}
ini_set("soap.wsdl_cache_enabled", "0"); // تعطيل ذاكرة التخزين المؤقت لـ WSDL
$server = new SoapServer("stockquote.wsdl"); // ملف التكوين
$server->addFunction("getQuote");
$server->handle();
?>
Stockquote.wsdl
<?إصدار xml = ترميز '1.0' ='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/'>
<message name='getQuoteRequest'>
<part name='symbol' type='xsd:string'/>
</ رسالة>
<اسم الرسالة='getQuoteResponse'>
<part name='Result' type='xsd:float'/>
</رسالة>
<اسم نوع المنفذ='StockQuotePortType'>
<اسم العملية='getQuote'>
<input message='tns:getQuoteRequest'/>
<output message='tns:getQuoteResponse'/>
</العملية>
</portType>
<اسم الربط=نوع 'StockQuoteBinding' ='tns:StockQuotePortType'>
<الصابون: نمط الربط = 'RPC'
Transport='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' Binding='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(نتيجة $);
?>