[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