kukix
26.02.2013, 12:32:02
Witam.
Posiadam konto na serwerze nq.pl i zastanawiam się nad obsługa crona z pozimu skryptu.
Myśląłem, żeby zrobić tak:
1. ustalam creon aby uruchamiał skrypt cron_wykonaj.php co 5 minut.
2. Skrypt cron_wykonaj.php sprawdzał by w bazi danych w tabeli np "CRON_ZADANIA" czy są jakieś zadanai do wyonania.
3. Jeżeli o w momencie wykoniana cron_wykonaj.php jest jakieś zadania to jest przetwarzane.
W ten sposób miałbym łatwą obsługę crona z poziomu skryptu.
Co sądzicie o takim rozwiązaniu?
Mam pewne problemy ze sposobem zapisu zadań w tabeli "CRON_ZADANIA". Czy może umieszczasc tam linki do poszczególnych plików wykonujących operacje np operacja_1.php, operacja_2.php itd ?
Czy ktoś mogłby wypowiedzieć sięw tym temacie?
mar1aczi
26.02.2013, 13:01:08
Ścieżki do poleceń musisz podawać bezwzględne. Cron nie koniecznie musi znać $PATH.
mstraczkowski
27.02.2013, 02:43:10
Niektóre crony potrafią trwać długi czas jeżeli mowa o np. Synchronizacji oferty z zewnętrznymi źródłami.
Dodatkowo potrafią zjadać spore ilości pamięci, kilka takich cronów po kolei i twój skrypt padnie z powodu memory limit lub max execution time.
A w najgorszym wypadku dojdzie do zalockowania tabeli w bazie i tym podobne.
Także ta kwestię musisz przewidzieć i przemyśleć
Często jest tak że crony muszą być uruchamiane w odpowiedniej kolejności przykładowo najpierw wypadałoby pobrać nowe kategorie produktów a dopiero potem same produkty. Więc to kolejna rzecz do przemyślenia
Kolejna rzeczą jest to, że warto pomyśleć o mechanizmie kolejki, aby tylko jeden cron mógł być aktualnie uruchamiany. Tak aby po 5 minutach nie uruchomił się kolejny lub ten sam cron.
Kolejną przeszkodą jest to, że musisz przewidzieć sytuację zakleszczenia, kiedy przykładowo cron się wykonywał zablokował kolejkę i nagle się zawiesił przez co nie dał rady odblokować kolejki w rezultacie żaden cron nie będzie mógł zostać uruchomiony.
Pozdrawiam