Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Symfony2]Uruchomienie skryptu niezależnie od aplikacji
Forum PHP.pl > Forum > PHP > Frameworki
Matrix12
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
A co Ci w CRON nie pasuje?
Matrix12
Podobno to przestarzałe, że niby system kolejkowania powinno się używać.
kpt_lucek
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ę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.