Jak vyresit cron frontu s vice php procesy

kleinpetr
Člen | 480
+
0
-

Zdravim,

uz par dni se snazim vyresit vhodne spousteni cronu pro velmi obsahle xml feedy zatim jsem nenasel tu spravnou cestu, proto budu rad za kazdy napad :)

Potrebuji naimportovat cca 300 xml, kazdy je jinak velky nektere maji stovky mb. A zaroven po jejich dokonceni potrebuji spustit jakesi doladeni detailu.

Momentalne mam jenden Command, ktery v sobe obsahuje po sobe jdouci ukoly

→ import xml
→ load data
→ check data
→ .....

Tim je zajisteno, ze probehnou po sobe, tak jak maji (pokud to dobehne)

Nicmene, nejprve jsem resil problem s pameti, jelikoz jsem i velke xml nacital pres SimplXmlElement() do pameti, to a bylo to pomale, to jsem vyresil s pouzitim XMlReader a pokusem mazat EntityManager na konci generovani jednoho xml. Nicmene to nedopadlo, ve finale uplne dobre a nyni po 11hodinach behu, mam 4gb pameti used, nechapu kde se to vzalo a drzi to php. (Mohu nekde zjistit co kde jak ?)

Nehlede na to, ze nejake xml se nepodarilo na prvni pokus precist, takze se nenacetli, pouze skipnuli.

Potreboval bych tedy neco nasledujiciho

  • zaregistrovat nejakou frontu, kde tu feedy rozdelim treba do 5ti skupin a aby se spousteli po sobe, ale aby se spustil vzdy novy proces php aby nezustavalo viset tolik dat v pameti, idealni by tedy bylo i mit moznost rict, zda je mohu pustit soubezne nebo po sobe. No a ve finale podminit, samozrejme nejak logovat neuspech a zkusit dalsi pokusy a ve finale spustit zaverecne skripty..

Koukal jsem na contributte/scheduler, ale nejsem si jisty, jakmile do cronu zaregistruju nejaky php run command, tak stejne cea ta fronta pobezi na jednom php procesu, takze to muj problem s pameti asi nevyresi.

Takze jedine udeat nejake vlastni reseni, kde budu spoustet cron co 5 minut a tem skupinam na zacatku ulozim priznak ze je busy a na konci ho smazu a tim udelam jakysi lock.. a pokud nebude mit zadna skupina priznak busy, tak teprve spustim dalsi veci..