XML feed beolvasás - terhelődhet e túl a rendszer?

gszoke képe

Sziasztok,

Van egy saját modul, ami XML beolvasást végez, és node-okba helyezi el az inputot.

A főbb utasítások, amiket a beolvasáshoz használok:

$xml = drupal_http_request($webshop->field_feedurl[0]['value']);
.
.
$xmlstr=html_entity_decode($xml->data,ENT_COMPAT,'UTF-8');
.
.
$object = simplexml_load_string($xmlstr);

Az így létrejött objektum elemeit viszem aztán be az adatbázisba.
Ez addig remekül működött, amíg 1000-2000 elemről volt szó.

Viszont van most egy ~10.000 -es tétel, aminek úgy a felénél leáll a process. Hibaüzenet nincs(watchdog-ot használok) - nem tudom van e egyéb lehetőség, hogy megnézzem a történteket?

A másik kérdésem az lenne, hogy terhelődhet e valamilyen formában túl a rendszer a fentiek miatt? Ha igen, merre lenne érdemes elindulni?
Esetleg törölni valamilyen tárolót menet közben?

Köszönöm a válaszokat.

Üdv.:
Gábor

Drupal verzió: 
szantog képe

2k adat mentése egy processben node_save-el?? Kisebb csoda, hogy ettől nem állt fejre a rendszer. Batch api táján kell körülnézni, az examples modulban kész példák vannak a megvalósítására.

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

gszoke képe

köszönöm, megnézem. Csak nagy vonalakban el tudod mondani, mi a lényegi különbség a két metódus között? Mi az amivel hatékonyabb a batch?

Köszi

0
0
szantog képe

A batch az, ami pl fordítások autoimportjakor, tömeges node törléskor, update.php futásakor zajlik. 1000 adatból mondjuk vesz 100-at, feldolgozza, veszi a következő 100-at, stb.. amíg el nem éri az összeset. Minden 100 adat feldolgozása külön process, és így nem fut ki az erőforrásokból.

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

gszoke képe

Sokat segítettek a fentiek, és azóta beleástam magam a batch api mélyébe, és már el is kezdtem beépíteni a modulomba.

Ahol elakadtam, és itt szeretnék egy kis segítséget/ötletet kérni:

Azt mondja ugye a leírás http://drupal.org/node/180528 "If not called from a submit handler, add the following"
Akkor adjunk hozzá: batch_process('node/1'); különben végtelen ciklusba mehet. Ez ugy átirányítja a usert, ha a futás befejeződött.

Viszont, amit én csinálok:
Van több feedem: XML, CSV, ezekből bizonyos feltételek alapján leválogatok, így összeáll mondjuk egy 3-as darabszám. Ezeken végigmegyek egyesével, veszem az elsőt, beolvasom, bizonyos műveleteket hajtok végre rajta, és itt kell a batch - több ezer elemes feed esetén -, a node kezeléshez, új felvétel, update, stb.

Na most miután itt végzett kellene nekem ugyan ezt megcsinálni a többi feed-del is, a példánál maradva a maradék kettővel.

De a batch itt ugye kiszáll, és a kód olvasása nem folytatódik tovább.

Összegezve, minden egyes feednél külön-külön szeretném használni a batch előnyeit, anélkül, hogy a teljes folyamat megszakadna.

Ha esetleg tudtok megoldást a fentiekre, előre is megköszönöm.

Üdv.:
Gábor

0
0