cron futási ideje

gszoke képe

Sziasztok,

Az alábbiakhoz szeretnék tanácsot/segítséget kérni:

Egy olyan oldalon dolgozom, ami rendszeres időközönként XML ből feed beolvasást végez, majd az adatokat feldolgozza.

A beolvasás a cron futásához kötött, viszont a 240 sec. futási idő nem elegendő, így ugye leáll és nem megy végig.

A beolvasandó adatok mennyisége igen nagy és nőni fog, tehát valahogy ki kellene tolnom az időt.

Van e erre olyan megoldás, ami nem "tesz kárt" a drupal-ban?

Köszönöm előre is.
Üdv.:
Gábor

Drupal verzió: 
Fórum: 
pp képe

architekturális kérdés, beszélja rendszergazdával, hogy hogyan tudnál cronból scripteket futtatni a szerveren.

pp

0
0
gszoke képe

ezt nem értem pontosan, mire is gondolsz!?

Biztosan az én ismereteim hiányosak, de tudnál kicsit pontosítani?

Maga az egész beolvasás egy saját modulban van megírva, ami akkor fut le ha a cron.

Köszönöm.
Üdv.:
Gábor

0
0
pp képe

Tegyük fel van 2G ramod. Ha most 500M-adsz a webszerver által futtatott PHP-knak, hogy fusson a cron jobod akkor 4 (2000 / 500) kérést tudsz biztonsággal egyidejűleg kiszolgálni. (ki tudsz többet is, csak nem biztonsággal. :D) Ha csak 200M-t adsz nekik akkor már 10 (2000 / 200) kérést ki tudsz szolgálni egyidejűleg, de a cron már nem fut le. Ha a cront más környezetben futtatod, mondjuk nem a webszerveren keresztül, akkor annak már külön adhatsz több memóriát(PHP-cli és a cron.php). Természetesen ekkor is csökken az egyszerre kiszolgálható kérések száma, mert csak 7-et ( (2000 - 500) / 200) tudsz kiszolgálni, de mégse csak 4-et. Ezt a rendszergazdád tudja így behangolni, mert ehhez megfelelő jogosultságok kellenek.

Így már érthető?

Azonban tudom ajánlani azt is, hogy refaktoráld a kódodat, mert amit írtál, hogy egyre több memória fogyasztása lesz a kódodnak igencsak rossz tervezésre utal. Mondhatjuk azt eljött az idő, hogy optimalizálj.

pp
(a fenti számolás durva egyszerűsítéseket tartalmaz a probléma megértését szolgálja pusztán)

0
0
gszoke képe

köszi a részletezést, így már világosabb a dolog, beszélek mindenképpen a rendszergazdával.

A fentiekhez van esetleg köze a max_execution_time és a memory_limit beállításoknak?

Mert a memory limit jelenleg 4096 MB.

Igen, abban igazad van, hogy optimalizálni kell a kódot, ez nem vitás, viszont ez egy olyan oldal, ahol idővel akár több 100 webshop feedjeit(termékeit) kell beolvasni, így a futási idő biztosan elhúzódik a cron futási idő korlátja fölé.

Ennek ismeretében van olyan javaslatod, hogy merre induljak el, ha megfelelő hatékonyságú kódot szeretnék?

Köszi,
Gábor

0
0
aries képe

Az XML-t valószínűleg feldolgozhatod elemenként, mondjuk Drush+Batch API-val (példa).

0
0
gszoke képe

az XML mellett CSV beolvasás is van(illetve választható).

köszönöm a felvetést, mindenképpen megnézem.

Üdv.:
Gábor

0
0