Oleh: lasmedi | November 24, 2007

Remote Query Dengan NuSOAP

aya mempunyai dua buah host, katakanlah host Nakula dan host Sadewa. Semua data tersimpan dalam mysql pada host Nakula. Dalam host Nakula telah terinstal pula Aplikasi Webserver lengkap dengan PHPnya.Dalam host Sadewa terdapat aplikasi berbasis web juga (PHP), namun aplikasi menggunakan data yang ada di host Nakula. Jika semua aplikasi itu dibawah kekuasaan kita, tentu bukan hal yang sulit, karena dalam fitur mysql memang ada perijinan untuk membuka query dari host lain. Namun jika kita hanya menghosting web kita di sebuah peruahaan webhosting, untuk alasan keamanan biasanya pihak hosting tidak membuka koneksi mysqlnya ke host luar, hanya localhost yang diberikan. Pada keadaan seperti ini remote query dengan webservice mungkin akan sangat membantu.

Banyak cara melakukan query via webservice, mungkin bisa dengan XML-RPC, WDDL, atau menggunakan XML biasa, namun kali ini akan kita coba gunakan protokol SOAP dengan NuSOAP.

Kita bisa mengunduh NuSOAP di http://dietrich.ganx4.com/nusoap/. Karena proses yang akan kita lakukan cukup sederhana, maka kita hanya memerlukan sebuah file nusoap.php saja pada paket itu untuk kita includekan pada aplikasi di sisi server (Nakula) dan client (Sadewa).

SISI SERVER (NAKULA)

File server.php ditaruh di sisi server, berisi konfigurasi database dan fungsi – fungsi sql_fetchrow(), sql_fetchrowset(), dan sql_numrows(), yang kemudian di daftarkan di SOAP.


< ?
//server.php

$db_host = “localhost”;
$db_user = “root”;
$db_pwd = “”;
$db_name = “achedywp”;

mysql_connect($db_host,$db_user,$db_pwd);
mysql_select_db($db_name);

function sql_fetchrow($q){
$r = mysql_query($q);
return mysql_fetch_assoc($r);
}

function sql_fetchrowset($q){
$r = mysql_query($q);
while($w = mysql_fetch_assoc($r)) $res[] = $w;
return $res;
}

function sql_numrows($q){
$r = mysql_query($q);
return mysql_num_rows($r);
}

// Pull in the NuSOAP code
require_once(‘nusoap.php’);

// Create the server instance
$server = new soap_server;
// Register the method to expose
$server->register(’sql_fetchrow’);
$server->register(’sql_fetchrowset’);
$server->register(’sql_numrows’);

// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ”;
$server->service($HTTP_RAW_POST_DATA);
?>
SISI CLIENT (SADEWA)

Di sisi client di taruh file client.php, untuk melakukan akses dan mengirimkan parameter query ke server.


< ?
//client.php
// Pull in the NuSOAP code
require_once('nusoap.php');
// Create the client instance
$client = new soapclient('http://localhost/remotequery/server.php');
// Call the SOAP method
$q = "select post_date, post_title from wp_posts limit 0,10";
$result = $client->call('sql_fetchrowset', array('q' => $q));

if ($client->fault) {
echo ‘<p><b>Fault: ‘;
print_r($result);
echo ‘</b></p>’;
} else {
// Check for errors
$err = $client->getError();
if ($err) {
// Display the error
echo ‘<p><b>Error: ‘ . $err . ‘</b></p>’;
} else {
// Display the result
print_r($result);
}
}
?>
Query yang saya lakukan diatas, menghasilkan array yang siap olah sebagai berikut,


Array
(
[0] => Array
(
[post_date] => 2001-06-03 07:39:13
[post_title] => Pertemuan 1 Pengantar
)

[1] => Array
(
[post_date] => 2001-06-09 07:39:13
[post_title] => Pertemuan 2 : Urgensi Menuntut Ilmu
)

[2] => Array
(
[post_date] => 2001-06-12 07:34:35
[post_title] => Pertemuan 3 : Sumber Ilmu dalam Islam
)

[3] => Array
(
[post_date] => 2001-06-17 21:15:00
[post_title] => Pertemuan 4 : ilmu-ilmu kauniah
)
)
Metode ini bisa digunakan untuk banyak keperluan, tinggal anda yang harus kreatif menggunakannya.

Selamat mencoba !!


Beri tanggapan

Your response:

Kategori