Avaleht
uus teema   vasta Tarkvara »  WWW »  Kuidas kontrollida, kas XML fail on laetud - KORRAS märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
Pihlakas
HV kasutaja
Pihlakas

liitunud: 18.10.2004




sõnum 18.01.2011 14:53:53 Kuidas kontrollida, kas XML fail on laetud - KORRAS vasta tsitaadiga

Tere,

Kuidas on võimalik kontrollida kas .xml fail on laetud? Soov oleks, et server ei hakkaks andmeid uuendama ennem kui fail loetud. Kuna ma arvan, et server ei jõua faili ära laadida ennem kui while tsüklit hakkab jooksutama ja osad andmed jäävad poolikuks. Kuigi, ega ma ei ole selles eriti kindel. Ehk keegi on taolise probleemiga kokku puutunud.
.xml faili suurus on ca 1,7mb

Link mis teeb päringu - võtab väga kaua aega (5-10min) - KÜSIGE KUI VAJA

Igatahes kood, mis uuendab andmeid on järgmine:
<?php
$username = "kasutaja";
$password = "parool";
$hostname = "localhost";

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
  or die("Unable to connect to MySQL");

//select a database to work with
$selected = mysql_select_db("np35931_uus_cn_parts",$dbhandle)
  or die("Could not select examples");


$Base_url = "....";
$xml = simplexml_load_file($Base_url);

$i = 0;

while($xml->item[$i]["code"] != "YYYY"){   // YYYY on viimane toode directos
$code = $xml->item[$i]["code"];
echo "Toote kood:",$code,"</br>";
$name = $xml->item[$i]["name"];
echo "Nimi:",$name,"</br>";
$hind_kmta = $xml->item[$i]["price"];
echo "Hind KM-ta:",$hind_kmta,"</br>";
$hind_kmga = $xml->item[$i]["VATprice"];
echo "Hind KM-ga:",$hind_kmga,"</br>";
$laoseis_tartu = $xml->item[$i]->stocklevel[1]["level"];
echo "Laoseis TARTU:",$laoseis_tartu,"</br>";
$laoseis_tallinn = $xml->item[$i]->stocklevel[2]["level"];
echo "Laoseis Tallinn:",$laoseis_tallinn,"</br>";

$laoseis_kokku = $laoseis_tartu + $laoseis_tallinn;
echo "Laoseis kokku:",$laoseis_kokku,"</br>";


mysql_query("UPDATE jos_vm_product SET product_in_stock=$laoseis_kokku, laoseis_tartu=$laoseis_tartu, laoseis_tallinn=$laoseis_tallinn WHERE product_sku=$code"); // uuendab laoseisu

$toote_id_paring = mysql_query("SELECT product_id FROM jos_vm_product WHERE product_sku=$code"); // küsib toote id et hiljem saaks hinda muuta
$toote_id = mysql_fetch_array($toote_id_paring);
$new_toote_id = $toote_id["product_id"];
echo "Toote ID:",$new_toote_id,"</br>";
echo $toote_id;
echo $toote_id_paring;
if ($hind_kmta != "0"){
if ($laoseis_kokku != "0"){
mysql_query("UPDATE jos_vm_product_price SET product_price=$hind_kmta WHERE product_id=$new_toote_id"); // uuendab toote hinda
}
}
$i++;
}
?>



Igatahes lõpus annab sellise vea:
Spoiler Spoiler Spoiler


Nagu näha, siis mitte alati. Ja toote ID ta ka võtta ei suuda. Kuigi see on nendel toodetel olemas.

Näiteks viima toode (kood: BT12277) on laos olemas, aga kodulehel ta laoseisu ei uuendanud.
Toote link: http://www.cn-parts.com/uus_cn_parts/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=2825&category_id=37&option=com_virtuemart&Itemid=2





EDIT:
Ehk peaks tegema nii, et iga toote informatsiooni küsib üks haaval? Huvitav kas ca 10 000 päringut tapaks serveri ära? Meil hetkel virtuaal server. Veel sooviks teada kas vrituaal serverilt VPS või privaat serverile üle minnes on väga suur kiiruse erinevus? Kas 1000-3000kr lisa iga kuu maksta tasub ennast ära? kellelgi on kindlasti kogemusi sellega.


viimati muutis Pihlakas 21.05.2012 15:18:25, muudetud 2 korda
Kommentaarid: 10 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
karu
HV kasutaja

liitunud: 08.08.2002




sõnum 18.01.2011 15:27:21 vasta tsitaadiga

$toote_id_paring sql on arvatavasti vigane, st. $code on vigane (sql'is ei ole $code "" vahel ega ka escape'tud)

simplexml loed niikaua kui xml on tervenisti kohal või saab timeout'i (local, remote). selle pärast pole vaja muretseda.
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
Pihlakas
HV kasutaja
Pihlakas

liitunud: 18.10.2004




sõnum 18.01.2011 16:45:50 vasta tsitaadiga

karu kirjutas:
$toote_id_paring sql on arvatavasti vigane, st. $code on vigane (sql'is ei ole $code "" vahel ega ka escape'tud)

simplexml loed niikaua kui xml on tervenisti kohal või saab timeout'i (local, remote). selle pärast pole vaja muretseda.


Suurepärane tänu! Probleem lahendatud. Nüüd käib asi 10x kiiremini.


mysql_query("UPDATE jos_vm_product SET product_in_stock=\"$laoseis_kokku\", laoseis_tartu=\"$laoseis_tartu\", laoseis_tallinn=\"$laoseis_tallinn\" WHERE product_sku=\"$code2\"");

$toote_id_paring = mysql_query("SELECT product_id FROM jos_vm_product WHERE product_sku=\"$code2\"");
Kommentaarid: 10 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  WWW »  Kuidas kontrollida, kas XML fail on laetud - KORRAS
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.