Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Cron N-razy za dnia
#luq
post 23.10.2012, 18:03:55
Post #1





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


Hej,

mam aplikacje w która jest rankingiem. Punkty rankingowe są przeliczane raz dziennie (w sensie generowanie nowego rankingu). Jako że przeliczenie wszystkich punktów trwa dość długo ostatnio podzieliłem to na mniejsze części, tych części może być zmienna liczba N. Tj. dziś może być tych kroków 20 a jutro 25. Dlatego zastanawiam się jak odpalić cronem całą listę kroków (tzn dziś cron ma się odpalić dokładnie 20 razy a jutro dokładnie 25).

2 pomysły które mi przychodzą do głowy:

1. Odpalać co minute crona i podczas ostatniego kroku zapisywać sobie flage typy "dziś już wygenerowano ranking" i przy następnym odpaleniu crona nic się nie dzieje bo ta flaga jest ustawiona.

Rozwiązanie te jest nie fajne ponieważ w przypadku 120 kroków na wygenerowanie całego rankingu muszę czekać 2h.

2. Odpalić crona raz i po końcu jednego kroku walić nagłówek 'Location: /ponowneWywolanieTejStrony'

A może ktoś ma lepszy pomysł? ;>


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
abort
post 23.10.2012, 19:22:02
Post #2





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


uwielbiam jak programiści używają sformułowań czasowych "dużo danych", "dość długo", "dużo pamięci", itp...
"Dużo danych" to może być np. 8KB (limit na $_GET), 8MB (limit na $_POST), 128M (np. ustawiony limit pamięci dla procesu PHP), 4GB (dla 32bit), 25 lub 50GB (dla BluRay)... Anyway, można tak długo. I dla każdego z wcześniej użytych sformułowań.

Ile to jest dla Ciebie "dość długo"? 5minut czy 5 godzin?
Go to the top of the page
+Quote Post
#luq
post 24.10.2012, 07:31:04
Post #3





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


Nie jestem w stanie sprecyzować Ci ile dokładnie, bo to zależy od tego z jakiego przedziału czasowego taki ranking jest budowany.
Uściślając - jest to aplikacja która zlicza aktywności fanów na danym fanpage`u - zlicza ich posty, komentarze, lajki dodając za każdą aktywność różną ilość punktów. Całość może trawać długo z kilku powodów:

- opóźnienie związane z pobieraniem danych z openGrapha facebooka
- dość duży przedział czasowy np. 2 mc - czyli jakieś 100-200 postów na fanpage`u, przyjmując że każdy post polubiło około 100 osób a skomentowało 50 trochę liczenia jednak jest.

Poza tym nie mam dedyka a więc muszę zmieścić się w limicie czasu odpowiedzi na apache`u a także mieć możliwość podpięcia tego do dowolnie popularnego fanpage`a.


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
alegorn
post 24.10.2012, 10:31:40
Post #4





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


gdzie to przeliczasz? mysql?
jesli tak, to poczytaj o events'ach

pomysl?
optymalizacja pracy, jesli sie tak dlugo wykonuje - to moze cos jest zle zaprojektowane??

pomysl nad tym, bo co bedzie dalej, jesli tych danych przybedzie jeszcze wiecej, a ty juz teraz nie jestes w stanie ich obsluzyc.

wydaje mi sie ze powinienes przemyslec sposob dzialania, byc moze zainteresowac sie innym softem? np bazami nosql ?

jedno jest pewne, odsuwasz w czasie jedynie problem który i tak bedziesz musiał rozwiazac w przyszlosci... tyle ze bardziej skumulowany.

j.
Go to the top of the page
+Quote Post
lukaskolista
post 25.10.2012, 09:25:30
Post #5





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


Cytat
Odpalić crona raz i po końcu jednego kroku walić nagłówek 'Location: /ponowneWywolanieTejStrony'
Przeanalizuj, czy to ma jakikolwiek sens i czy w ogole zadziala.

Po co Ci jakies kroki? Jeden skrypt dba o aktualizacje danych, a drugi je przelicza. Ten ktory przelicza jest niezalezny od tego, ktory aktualizuje, wiec przeliczanie bedzie szybkie.

Popatrz jak jest na allegro. Wystawiasz aukcje i od razu dostajesz link do aukcji, natomiast w panelu "moja sprzedaz" aukcja jest widoczna dopiero po chwili. Moral z tego jest taki, ze dane zostaly zapisane, a jakis inny skrypt po chwili z nich skorzystal i je przetworzyl.

Ten post edytował lukaskolista 25.10.2012, 09:27:57
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: 28.03.2024 - 21:03