Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> kolejkowanie w aplikacjach PHP
ciekawski
post 14.02.2013, 14:59:55
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 29.05.2007

Ostrzeżenie: (0%)
-----


Hej,

mam aplikację, która przetwarza sporo danych non stop. Aktualizacje te wykonują się w cronie cyklicznie.
Zastanowiły mnie jednak kolejki. Czy macie jakieś doświadczenie w tym temacie?
Natknąłem się na http://activemq.apache.org/
Macie może jakieś doświadczenie z kolejkowaniem - jakieś plusy i minusy, możliwe zastosowania?
Go to the top of the page
+Quote Post
mathijas
post 14.02.2013, 23:01:54
Post #2





Grupa: Zarejestrowani
Postów: 49
Pomógł: 1
Dołączył: 9.10.2008

Ostrzeżenie: (0%)
-----


Jeśli przeliczenia następują w dość harmonicznym cyklu, to chyba lepiej będzie napisać skrypt w bashu, który odpalisz CRONem na początku. Ewentualnie uruchomić program jako wątek systemu i niech on tam sobie pętli się w środku. Przeciwwskazania, jakie widzę, to jeśli masz webowy interfejs, przy pomocy którego administrator systemu zmienia samodzielnie godziny uruchomienia CRONa, i może coś popsuć i nawarstwić kilka wątków. Jeśli tak nie jest - śmiało polecam basha.
Go to the top of the page
+Quote Post
ano
post 15.02.2013, 00:06:59
Post #3





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


@mathijas - a co ma "skrypt w bashu" wspólnego z sednem problemu?

Tak abstrahując: Bardzo ciężko lub wręcz niemożliwe jest stworzenie dobrego kolejkowania np. w mysql. To zawsze na jakimś etapie zawodzi.
Więc dobrze, że wziąłeś się za *MQ.
Ja polecam RabbitMQ - bardzo prosto w niego wejść, prosty, ma wszystko co potrzeba (np persistance, potwierdzania wiadomosci itp), ma fajne pluginy (np. bezbłędny panel zarządzania po http), mozliwość tworzenia wielu użytkowików, wysoko wydajny, idealny do tworzenia skalowalnych systemów, dobre biblioteki w PHP do obslugi itp...

Przykłady wykorzystania:
- indeksowanie danych w np. ElasticSearch
- wysyłka powiadomień (sms, emaile cokolwiek)
- logger (logowanie błędów itp)
- "ogólnie" asynchroniczne wywoływanie długotrwałych akcji (np. pobieranie danych z zewnętrznych API, wysyłanie)
- konkretne przykłady firm wykorzystujących na: whoisusing.it/RabbitMQ

Ten post edytował ano 15.02.2013, 00:08:23


--------------------
Linkedin | ...
Go to the top of the page
+Quote Post
mathijas
post 15.02.2013, 12:39:07
Post #4





Grupa: Zarejestrowani
Postów: 49
Pomógł: 1
Dołączył: 9.10.2008

Ostrzeżenie: (0%)
-----


Ano ma to, że jeśli następna aktualizacja ma czekać aż skończy się poprzednio, to równie dobrze można olać CRONa i zapętlić je w skrypcie. Jak pierwsza się skończy, automatycznie odpali się druga.
Go to the top of the page
+Quote Post
ano
post 15.02.2013, 16:26:03
Post #5





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Dalej nie rozumiem. tzn do obsługi jakiegokolwiek systemu kolejkowania stawiasz sobie daemona (np. w php) - "konsumenta"...


--------------------
Linkedin | ...
Go to the top of the page
+Quote Post
mathijas
post 16.02.2013, 17:43:06
Post #6





Grupa: Zarejestrowani
Postów: 49
Pomógł: 1
Dołączył: 9.10.2008

Ostrzeżenie: (0%)
-----


Tak, tak, ale ja się odnoszę nie do samego kolejkowania, tylko do problemu postawionego przez @ciekawski-ego, dlatego nie możemy się dogadać :-). Sorry za niezrozumienie ale możliwe, że wysnułem zbyt daleko idące wnioski :).

Kolega ma aplikację w sposób ustawiczny dokonującą długich przeliczeń - "aktualizacji" na bazie danych - w określonych odstępach czasu. Niektóre aktualizacje działają na tyle długo, że przekraczają czas na wykonanie, i zapewne to było motywem pytania o kolejkowanie. Sugeruję więc, że można to zrobić bez użycia kolejkowania, używając skryptu, który się ładnie zapętli i automatycznie wykona następną aktualizację w momencie ukończenia poprzedniej. W ten sposób aktualizacje nigdy nie wpadną w konflikt a całość powinna być lepiej zsynchronizowana. To oczywiście pod warunkiem, że nie jest istotna godzina uruchomienia następnej aktualizacji, mają się uruchamiać jedna po drugiej a CRON był tylko gwarantem braku konfliktów.

Natomiast powoli odnoszę wrażenie, że chyba pytanie o kolejkowanie faktycznie nie ma nic wspólnego z opisem aplikacji, więc sorry za zamieszanie :-).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:08