Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odpalanie crona co sekundę ?
Forum PHP.pl > Forum > Serwery WWW
radone
Witam,
zastanawiam się czy da się odpalić jakiś skrypcik co sekundę za pomocą crona. Widziałem ze minimalny czas co jaki może być odpalany cron to 1 minuta, lecz potrzebuje odpalać skrypt co sekunde, macie jakieś pomysły ?

Niby można odpalać jakąś metodę co minute i w niej umieścić pętle od 0 do 60 i usypiać skrypt metoda sleep na 1 sekundę ? Co sądzicie o takim sposobie ...
erix
Prosty skrypt basha:
http://forum.slicehost.com/comments.php?Di...ID=2767#Item_18

Ale w jakim celu odpalać skrypt co sekundę?
radone
Robię coś na wzór portalu podbij.pl, i ma byc możliwość ustawiania własnych botów do podbijania ceny. I wymyśliłem sobie ze będzie odpalany skrypt po stronie serwera ktory bedzie czuwal nad tym kiedy uruchomić konkretnego bota do podbijania ceny.

Hmm a moze jest inny lepszy sposob na to ...
flashdev
Cytat(radone @ 4.01.2009, 17:52:24 ) *
Hmm a moze jest inny lepszy sposob na to ...


Jest smile.gif
I to misie odrazu nasuneło kiedy ujawniłeś do czego Ci to potrzebne.
Przecież nie musisz skryptu uruchamiać dokładnie w momencie przed zakończeniem limitu czasu. Wystarczy, że masz zapamiętane daty wszystkich zdarzeń, a później kiedy tylko chcesz pobrać jakąś informację na temat danego zdarzenia wyciągasz z bazy danych wszystkie zdarzenia (podbicie itp) dotyczące tej aukcji i analizujesz, czy juz jest zakończona, czy jeszcze został czas, ile czasu zostało.
Myśle, że tak sie tworzy wszystkie gry mmorpg.
radone
Cytat(flashdev @ 4.01.2009, 18:09:54 ) *
Jest smile.gif
I to misie odrazu nasuneło kiedy ujawniłeś do czego Ci to potrzebne.
Przecież nie musisz skryptu uruchamiać dokładnie w momencie przed zakończeniem limitu czasu. Wystarczy, że masz zapamiętane daty wszystkich zdarzeń, a później kiedy tylko chcesz pobrać jakąś informację na temat danego zdarzenia wyciągasz z bazy danych wszystkie zdarzenia (podbicie itp) dotyczące tej aukcji i analizujesz, czy juz jest zakończona, czy jeszcze został czas, ile czasu zostało.
Myśle, że tak sie tworzy wszystkie gry mmorpg.


Hmm niby tak ale tutaj jest taka zależność ze jeżeli użytkownik ustawi swojego bota podbijającego cene to jeśli czas aukcji zbliża się do końca to musi odpalić tego bota i dodatkowo wydluzyc czas aukcji, a z tego co napisales zrozumialem ze analize przeprowadzamy po zakonczeniu czasu ...
flashdev
Cytat(radone @ 4.01.2009, 18:21:34 ) *
po zakonczeniu czasu ...


Nie koniecznie o to mi chodziło. Analize wykonujesz wtedy, kiedy potrzebny jest wynik tej analizy, czyli np gdy za pomocą ajaxa użytkownik poprosi o dane, tak jak to się dzieje na podbij.pl
Może to być przed zakńczeniem aukcji, a moze być po teoretycznym zakończeniu. Jakie to ma znaczenie, skoro przy wywołaniu skryptu obliczysz nowy czas i wyswietlisz parwidłowe dane?
wiechol
Cytat(flashdev @ 4.01.2009, 18:37:30 ) *
Nie koniecznie o to mi chodziło. Analize wykonujesz wtedy, kiedy potrzebny jest wynik tej analizy, czyli np gdy za pomocą ajaxa użytkownik poprosi o dane, tak jak to się dzieje na podbij.pl


Wychodząc z takiego założenia jeśli nikt w danej chwili nie będzie miał włączonej przeglądarki nie będą wysyłane żądania i wszystko stanie. Ma ktoś pomysł jak zabezpieczyć się przed tego typu przypadkiem?
sowiq
Ale flashdev podał Ci chyba jedyne rozsądne rozwiązanie.

Przykład:
- crona nie odpalasz wogóle (ew. co jakieś 5 minut, jeżeli chcesz wysyłać powiadomienia od razu po zakończeniu aukcji)
- przy wejściu użytkownika na stronę robisz coś w stylu symulacji podbić, tzn zamiast robić 1 podbicie co sekundę, robisz 60 po minucie, symulując przy okazji podbicia kilku użytkowników. W ten sposób użytkownik wchodząc na stronę, widzi kto prowadzi (zostało to obliczone w czasie generowania strony) i inne informacje. Nie musi wiedzieć, czy było to obliczane na bieżąco, czy w czasie generowania strony.

Odpalając skrypt co sekundę szybko zajeździsz serwer jeśli popularność Twojego serwisu wzrośnie...
damians
Powracam to tego postu.

A jeśli zrobić inaczej. Pamiętajmy że to musi działać szybko!
Mianowicie:
odpalać crona co minute i żeby działał 59sekund ale czas max wykonania skryptu 60sekund.
I cron będzie generował gotowe cache danych. To spowoduje ze serwer może będzie w użyciu non-stop ale użytkownik nie będzie męczył SQL'a a tylko zwykle pliki cache.
Jak myślicie?
erix
Ale przecież cache może wygenerować i użytkownik odwiedzając stronę...

Cytat
Pamiętajmy że to musi działać szybko!

Większy problem będzie z lagami na łączach, a nie harmonogramem.
damians
No właśnie lagi na łączach zawsze będą, Nie zależnie od tego czy to użytkownik będzie generować czy serwer. Tak więc myślę ze zakładając że było użytkowników 50 jednocześnie to serwer będzie mniej obciążony jeśli 50 użytkowników tworzyło cache niż 1 serwer.
To pozwoli zaoszczędzić parę milisekund które umożliwią krótszy czas otwierania danych.

Tak właśnie myślałem, powiedzmy dla 10 użytkownikach to lepiej było by tworzyć żeby użytkownik generował cache, Ale dla większej ilości serwer. Chciałem analitycznie tworzyć listę głosujących przez same dane javy i boty ale problem jest w połączeniu (z synchronizowaniu javy i php)...
erix
Cytat
z synchronizowaniu javy i php

Chyba JavaScript, a nie Javy.

Lagi AJAX możesz sobie przecież prosto wyliczyć - kalibracja przez kilka żądań, pobierasz czas rozpoczęcia w ms, czas zakończenia, odejmujesz i wyliczasz średnią. winksmiley.jpg Choć nie wiem, po co Ci czas między klientem a serwerem...
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.