[support] Hosszu folymatok kezelese
Prunk-Eger Edgar
kapcsolat at edgarpe.hu
2009. Feb. 26., Cs, 20:51:58 CET
z> A cron akkor vár meg egy folyamat a másikat, ha "megkérik" (értsd:
z> implementálják).
z> Praktikus úgy csinálni, hogy ellenőrizni kell hogy fut-e az előző batch,
z> és ha nem, akkor indítani újat, esetleg jelezni a futónak, hogy "köszi,
z> megállhatsz, folytatom én".
A drupal cron-ból egyszerre csak egy fut, ezt már implementálták a
drupal fiúk. Ha meghívásra kerül a cron.php, miközben még fut egy
másik példány, akkor nem hívja végig az implementált hook_cron()-okat,
csak a whatchdog-ba tesz egy megjegyzést.
z> Egyébként lehet böngészőben sokáig tartó folyamatot írni,
z> visszajelzéssel, erre van a batch modul.
z> Már dolgoztam vele 6-os Drupal alatt, ha esetleg azzal fogsz dolgozni,
z> és kell segítség.
z> Nekem volt ~fél órás update-em (regex cserével, stb), és szépen írta
z> hogy hol tart, csak ha elnavigáltam v. leállítottam a frissítést, akkor
z> abbahagyta.
De a fentiek akkor igazak, ha a másik cron példány kevesebb mint 1
órája indult. Különben a Drupal úgy dönt, hogy csak beragadt a cron
szemafor és simán kilövi. Tehát ha a hook_cron()-ban implementált
cuccod több mint 1 óráig fut, akkor bizony előfordulhat hogy egyszerre
több is fut.
Ezek a cron-ra vonatkoztak, ha csak egyszer kell lefuttatni valamit,
arra ott a batch api, ld:
http://api.drupal.org/api/group/batch/6
Edgar
--
www : http://edgarpe.hu
e-mail: kapcsolat at edgarpe.hu
"Vision without action is a daydream,
Action without vision is a nightmare" – Japanese proverb
További információk a(z) support levelezőlistáról