ugrás a tartalomhoz

Rengeteg adat lekérése sok XML fájlból

dax95 · 2012. Júl. 12. (Cs), 21.43
Sziasztok!

Van egy tőzsdés oldal, ahol minden userről egy api segítségével statisztikát kell készíteni. A gond ott kezdődik, hogy XML fájlban kapom vissza az adatot, egy URL lekérés után. Ezt jelenleg úgy oldom meg, hogy egy for ciklussal futtatom végig a dolgot, de ez 50 felhasználónál 25-30 sec (közel 30 ezer felhasználó van). Nem lenne gond, ha 20-30 perces késéssel jelennek meg az adatok (és addig mysql-ben tárolni), de nekem böngészőben 20 percnél tovább nem futott, 502-es kódra hivatkozva.

Tudtok valami gyorsabb megoldást vagy van valami javaslatotok?
Előre is köszönöm.

Ui.: A kódom így néz ki jelenleg:

function load_file($url){
$ch = curl_init($url);
//Return http response in string
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$xml = simplexml_load_string(curl_exec($ch));
return $xml;
}
for ($i = 24950; $i <= 25000; $i++) {
$feedurl = 'http://www.zulutrade.com/webservices/api/tradehistoryindividual.ashx?pid='.$i.'&operation=th';
$TradeHistory = load_file($feedurl);
//$TradeHistory = load_file($feedurl);
?>
<div id="content">
<?php
foreach ($TradeHistory->Trades->Trade as $trade) {
echo "<h2>" . $trade->id . "</h2>";
echo "<p>" . $trade->buy . "</p>";
}
echo "<hr>";
}

 
1

curl_multi_exec

janoszen · 2012. Júl. 12. (Cs), 22.24
Szerintem nézd meg a curl_multi_exec függvényt. Egyébként először tisztázni kellene, hogy a másik oldal mit bír lekérésszám tekintetében.
3

Abban is jobb mondjuk 100-as

inf · 2012. Júl. 12. (Cs), 23.38
Abban is jobb mondjuk 100-as csomagokban feldolgozni, mert hamar betelik a memória...
2

másik program

Poetro · 2012. Júl. 12. (Cs), 23.38
Írj egy másik programot, vagy használj egy direkt erre dedikált programot. Annak add át az URL-eket, amit le kell tölteni, majd ezeket letölti. Amikor készen van ezekkel a letöltésekkel, akkor már meg tudod mutatni a felhasználóknak a most már letöltött XML-ek elemzésének eredményét. Ha az adatok lekérését a felhasználó kérvényezi, akkor pedig amennyiben még nincsenek letöltve, azaz nincs eredmény, akkor AJAX-szal long polling segítségével kérdezgesd a szervert, hogy megvannak-e az adatok.