Velius
1.12.2008, 18:39:33
Witam, chodzi mi o skrypt, który będzie cachował dane na 5minut, i co 5minut odświeżał. Chodzi o skrypt na stronę dynamiczną, który będzie sprawdzał stan serwera (pewnej gry) (socket), zapisywał go w bazie danych, i po 5 minutach odświeżał. Potrzebne mi to do tego, żeby lista, na której jest około 400 serwerów mogła się normalnie odświeżać, bez takiego długiego oczekiwania, czy da się jakoś zoptymalizować bazę danych czy coś w tym stylu? Czsami występuje bład 500, który jest chyba związany z obciążeniem serwera.
kwiateusz
1.12.2008, 18:48:56
Super, ale że co mamy Ci taki napisac czy jak? bo samo odpytywanie co 5 minut problemu nie stanowi jak i zapisanie tego w bazie
Velius
1.12.2008, 18:53:14
Dla mnie stanowi problem

Chodzi mi o to jak to ma mniej więcej wyglądać, to zapisywanie i potem autoodświeżanie.
Cytat
Chodzi o skrypt na stronę dynamiczną, który będzie sprawdzał stan serwera (pewnej gry) (socket), zapisywał go w bazie danych, i po 5 minutach odświeżał.
No to masz - powiedzmy - plik/rekord, w którym zapisujesz (oprócz właściwych danych) informację o ostatnim pobieraniu. Przy każdym żądaniu sprawdzasz, ile czasu minęło od ostatniego pobierania. Jeśli więcej niż ustalony, pobierasz dane ponownie, jeśli nie - wczytuj z cache'u.
webdice
1.12.2008, 19:39:55
Proszę o dodanie tagu w tytule tematu, w innym wypadku zamknę temat.
Velius
1.12.2008, 20:21:58
Tak ale sprawdzanie 400 serwerów na raz raczej nie jest możliwe, wyskakują przeciążenia serwera, gdy próbuję. Możliwe jest jedynie ładowanie 4 serwerów na raz aby wszystko chodziło w normalnym tempie. Utworzyłem 125 plików cron.
cron.php, cron2.php, cron3.php i tak dalej...
Kożystam z darmowego skryptu webcron.pl ale tam możliwe jest wykonanie jedynie 50 kryptów.
W jaki sposób to zrobić? Mogę zrobić w każdym pliku cron.php przekierowanie do następnego i wtedy wykona się to jako 1 CRON? I odejmie mi tylko 1 punkt? Czy od razu tyle ile razy było przekierowanie?
Cytat
W jaki sposób to zrobić? Mogę zrobić w każdym pliku cron.php przekierowanie do następnego i wtedy wykona się to jako 1 CRON? I odejmie mi tylko 1 punkt? Czy od razu tyle ile razy było przekierowanie?
W miarę, jak użytkownicy odwiedzają stronę, to z bazy wybieranych jest np. 10 rekordów i za jednym odświeżeniem cache jest uaktualnionych kilka, nie jeden. Oczywiście, robisz regułki, który serwer został już odświeżony, a który nie.
Velius
1.12.2008, 21:43:04
powiedz mi jak tego dokonać bo ja w cache jestem zielony, podstaw nie znam, taki temat napisałem bo słyszałem, że pownienem udać się właśnie w tym kierunku.
Przecież napisałem parę postów wyżej, jak zrobić.
Velius
3.12.2008, 14:22:17
Prawie udało mi się zrobić to za pomocą mysql i php, otóż chcę żeby wyglądało to tak.
Jest tabela PLAY, która przechowuje dane o serwerze, który został ostatnio sprawdzony.
Tabela ta przechwuje jedynie nr serwera, który był ostatnio sprawdzony.
I jest takie zapytanie:
$pytanko = mysql_query("SELECT * FROM play ORDER BY NR DESC");
Potem do zmiennej $ot zostaje przypisany numer pobrany zaptaniem +1
$ot = $pytanko + '1';
Potem jest zapytanie, które wyciąga dane tego serwera, i sprawdza jego status zapisując go pod koniec w bazie danych.
I na koniec jest takie zapytanie:
mysql_query("INSERT INTO play VALUES to to i to");
To zapytanie ma zapisać znowu do bazy, że ten serwer był ostatnio sprawdzany.
Ale, jest pewien problem, nr serwerów nie są po koleji, np pierwszy nie jest 1 tylko 17, ponieważ kiedyś niektóre usuwałem.
No i jak już sprawdzi ostatni serwer to nie wraca z powrotem do 1.
Jak tego dokonać? Żeby sprawdzało tylko serwery z tablicy z serwerami, po koleji a potem wracało do 1.
INSERT INTO? A nie lepiej
UPDATE?
Cytat
Jak tego dokonać? Żeby sprawdzało tylko serwery z tablicy z serwerami, po koleji a potem wracało do 1.
Nie tak sprawdzaj. Wyciągaj sobie identyfikatory do jakiejś tablicy i po ukończeniu sprawdzania zmieniaj flagę na podstawie tych identyfikatorów.
W sumie, to chyba sam sobie stwarzasz problem.
Velius
3.12.2008, 19:20:31
Zaprezentuj mi jak miała by wyglądać ta zmiana flagi:P
Mam tablicę, w której są wszystkie serwery i powiedzmy dodam do niej jedno pole (sprawdzony) i tylko jeden serwer bedzie mial na TAK. I podczas wejścia na obojętnie która stronę serwisu będzie sprawdzanie, który serwer był ostatnio, ale jak zrobić, żeby był wybrany następny w tablicy?
=====================
Chciałbym się też dowiedzieć na jakieś zasadzie działa CRON w Drupalu?
Nie ma się przecież dostępu do konsoli itp.
Czy mogę uruchamiać jakoś zadania CRON jeśli w danych mojego serwera nic nie pisze, ale po zainstalowaniu tam drupala wszystko działa?
I jeszcze jedno, jak mogę ustawić crona o danej godzinie tylko i wyłącznie używając php.
// Połączyłem posty.
// ~webdice
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.