Data yang dikirim dari Client dalam format XML, untuk program Clientnya bisa menggunakan program Desktop seperti VB, C# ataupun berbasisi Server Script (PHP,ASP.NET).
Cara Kerja Pengiriman (Upload) dalam format XML :
Client :
- Dari sisi client data XML dibuatkan dalam bentuk file XML atau dari table yang digenerate menjadi format XML.
- Sesudah dibuatkan dalam format XML, dalam script pengiriman ke serve tinggal dipanggil nama file dari script uploadXML
Script ini di simpan di web server (server Script) dengan menggunakan PHP, alur kerja dari script ini :
- Data XML yang upload dari client dicek, apakah dalam format XML atau bukan.
- Apabila ya, data XML disimpan kedalam variable XML kemudian disimpan dalam bentuk file sementara (nama file di acak dengan kombinasi nama, tanggal pembuatan dan random.
- Setelah disimpan kedalam file XML, kemudian file tersebut dibuka, kemudian di filter, filter pertama : data stock, filter kedua : data indeks
- Apabila hasil filter terdapat data-data tersebut, kemudian di insert ke table.
- Setelah selesai di insert ke table, kemudian koneksi ke database di tutup.
/*
* XML Server.
*/
$xml_post = file_get_contents(‘php://input’);
if ($xml_post) {
$link = mysql_connect(‘localhost’,'root’,”) or die(‘Cannot connect to the DB’);
mysql_select_db(‘mstock’,$link) or die(‘Cannot select the DB’);
$xml_file = ‘received_xml_’ . date(‘Y_m_d-H-i-s’) .rand() . ‘.xml’;
$fh = fopen($xml_file, ‘w’) or die();
fwrite($fh, $xml_post);
fclose($fh);
$xml = simplexml_load_file($xml_file);
$date=”";
mysql_query(“START TRANSACTION”);
foreach ($xml->stocks->stock as $value) {
if ( trim($date) !=trim($value->stk_date)) {
mysql_query(“DELETE FROM STOCK_EOD where STK_DATE=’$value->stk_date’”);
$date=$value->stk_date;
}
mysql_query(“INSERT INTO stock_eod VALUES (
‘$value->stk_date’ , ‘$value->stk_code’ ,
‘$value->stk_name’ , $value->stk_prev ,
$value->stk_high , $value->stk_low ,
$value->stk_clos , $value->stk_volm ,$value->stk_amnt ,
$value->stk_indx , $value->stk_pidx ,
$value->stk_askp , $value->stk_askv ,
$value->stk_askf , $value->stk_bidp ,
$value->stk_bidv , $value->stk_bidf ,
$value->stk_open , $value->stk_first ,
$value->freq , $value->stk_list ,
$value->fore_sell , $value->fore_buy)”
);
}
$date=”";
foreach ($xml->inxs->inx as $value) {
if ( trim($date) !=trim($value->stk_date)) {
mysql_query(“DELETE FROM INDEX_EOD where INX_DATE=’$value->inx_date’”);
$date=$value->inx_date;
}
mysql_query(“INSERT INTO INDEX_eod VALUES (
‘$value->inx_date’ , ‘$value->inx_code’ ,
‘$value->inx_name’ , $value->inx_prev ,
$value->inx_high , $value->inx_low ,
$value->inx_last , $value->inx_change ,$value->inx_stk ,
$value->inx_volm , $value->inx_amnt ,
$value->inx_freq , $value->inx_mcap ,
$value->inx_first )”
);
}
mysql_query(“COMMIT”);
unlink($xml_file);
return;
}
?>
0 komentar:
Posting Komentar