Matrix12
16.10.2015, 19:03:07
Witam, chce uruchomić skrypt który będzie pytał zewntęrzne API codziennie o pewnej godzinie i wrzucał rekordy do bazy. Myślałem nad cronem, ale mam jednak pytanie czy istnieje inne rozwiązanie niż cron ?
Pyton_000
16.10.2015, 19:24:35
A co Ci w CRON nie pasuje?
Matrix12
17.10.2015, 20:09:49
Podobno to przestarzałe, że niby system kolejkowania powinno się używać.
kpt_lucek
18.10.2015, 16:56:09
Imo zbudowanie tego co chcesz poprzez kolejkę (chociażby RabbitMQ) zajmie Ci 10x więcej czasu aniżeli CRON'em.
Prosta sprawa, piszesz sobie komendę console'ową, ogarniasz w niej całą logikę i wrzucasz w CRON, uruchomi się tak często jak tylko chcesz.
W przypadku kolejki musisz się napracować, kolejka trzyma informacje z danymi, pod to piszesz consumer(y) które mają za zadanie "przetrawić" kolejkę. Plus kolejki jest taki, że w przypadku ciężkich kolejek możesz uruchomić X consumerów niezależnie, a co za tym idzie - szybciej ją "rozładować".
Przykład z życia wzięty:
1) Dla cron'a dobrym polem do popisu będzie okresowe generowanie np. raportów - potrzebujesz wykonać raport raz dziennie, tak aby konkretnego dnia widzieć statystykę dnia poprzedniego / innego objętego regułą okresu.
2) Dla kolejkowania, dobrym polem może być synchronizacja, weź pod uwagę możliwość replikacji storage'u na dane, zakładając podstawową bazę jako MySql i pomocniczą jako np. Solr czy Elasticsearch, chcesz aby nowe wpisy były indexowane poprzez te 2gie (Solr i ES), przy założeniu, że całość nie ma się odbywać w chwili zapisu do bazy, tak aby nie blokować jakiegoś procesu. Tutaj z pomocą przychodzi Ci kolejka - wrzucasz informacje o zmianie i potrzebie (re)indexacji i w wolnej chwili jakiś ograny consumer się tym zajmie.
Mam nadzieję, że rozumiesz różnicę.