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
2k adat mentése egy
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.
----
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.
köszönöm,
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
A batch az, ami pl fordítások
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.
----
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.
Sokat
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