Masov
16.11.2005, 18:24:07
Witam

Musze zrobic cos podobnego jak na tym forum, czyli przy przegladaniu tematu na dole mamy napisane kto oglada dany post. Zalezy mi na czyms podobnym tylko chce to jeszcze sprzezyc z flashem ale to juz looz :-)
Nie mam wogole koncepcji jak sie za to zabrac :/ Myslalem o tym ze ktos sie loguje, zapisuje nick do pliku, ale nie wiem jak wywolac akcje gdy przegladarka jest zamykana, lub gdy uzytkownik wylaczy komputr "Power'em"

Jakies pomysly?
angel2953
16.11.2005, 19:30:45
przy każdorazowym załadowaniu danej strony dopisuj do pliku kto przegląda stronę a po ustalonym czasie usuwa dany wpis,
lub zrób na sesji: w sesji zapisuj jaką strone aktualnie ogląda user a potem przy ładowaniu danej strony sprawdzaj jaka strona jest w sesji.
Masov
16.11.2005, 21:21:48
mam pewne watpliwosci, ta lista osob ma byc czescia czatu napisanego w php i flashu
1 sposob: sprawdzanie, usuwanie, dodawanie, chyba znacznie obnizy wydajnosc kodu, wyobraz sobie ze mamy powiedzmy 10 osob na czacie, co 30 sek z kazdej uruchomionej kopii jest wykonywany kod sprawdzajacy, odczytujacy daty kiedy dana osoba byla dodana, sprawdza czy minal dany czas, i wtedy albo zostawia albo usuwa, do tego moze byc tak ze osoba jest na czacie a zostanie usunieta i zanim nick zostanie wyslany ponownie minie troche czasu
2 sposob: niezbyt czaje, bo nie wiem czy da sie odczytac dane z innej sesji niz ta ktora jest zastartowana na naszym kompie, jesli tak to pewnie musialbym zapisac id sesji do pliku?
nie wiem czy rozwiazaniem nie byoby uzycie crona ktory by sam uruchamial kod czyszczacy co jakis czas zamiast 10 razy z kazdej kopii flasha?
SongoQ
16.11.2005, 21:45:03
Nie znam mechanizmu jaki jest na tym forum ale najprostszym rozwiazaniem jest zapisywanie kto kiedy co oglada i zwykly prosty selec ktory pokazuje aktywnosc np z ostatniej minuty. Niepotrzebne kombinowanie z cronem, pliki tez zbedne, wystarczy 1 tabela.
angel2953
16.11.2005, 21:59:06
Cytat(SongoQ @ 2005-11-16 22:45:03)
Nie znam mechanizmu jaki jest na tym forum ale najprostszym rozwiazaniem jest zapisywanie kto kiedy co oglada i zwykly prosty selec ktory pokazuje aktywnosc np z ostatniej minuty. Niepotrzebne kombinowanie z cronem, pliki tez zbedne, wystarczy 1 tabela.
No tak jest na tym forum, że id sesji jest zapisywane do bazy, a potem tylko odpowiednie dane wyciągane... Kiedys jak było IPB Trial to mozna było obejrzeć kod źródłowy. Teraz triala chyba zlikwidowali...
Masov
17.11.2005, 17:00:01
Nadal nie za bardzo czaje :/
@ SongoQ - to ma byc lista userow do czatu, wiec moze byc tylko jedna stronka przegladana, no i plus jeszcze to ze raczej czesciej musi byc sprawdzane, mysql odpada bo go nie znam (wiem ze wstyd

), chyba ze to bedzie najlepsze rozwiazanie to sprobuje sie nauczyc

moglbym prosic o krociotki algorytm co po kolei musimy zrobic?
SongoQ
17.11.2005, 20:59:22
1. Po wejscu na strone user zostaje zapisany w bazie (po kazdym odswierzenie dodawany jest kolejny wpis)
INSERT INTO aktywny_user (id, user, user_data, ..................) VALUES (.................)
2. Usuniecie rekordow ktore sa starsze on n (n = 1 min)
DELETE FROM aktywny_user WHERE user_data < NOW() - intereval n
3. Licznie userow
SELECT COUNT(*) AS ilosc_userow FROM aktywny_user
Masov
17.11.2005, 21:07:39
to mi juz bardzo duzo pokazalo

jako ze moja znajomosc sql jest = 0 to sprobuje to samo zrobic na plikach

dziekuje
SongoQ
18.11.2005, 13:01:08
Ale jesli nauczysz sie SQL to na pewno dobrze na tym wyjdziesz
Guest
19.11.2005, 09:34:09
domyslam sie, ale na serwerze nie mam obslugi baz danych, a na localhostcie jak probwalem to cos mi nie chcialo zadzialac :/
ale to co napisales nakreslilo mi istote calego peoblemu i jak go rozwiazac, chodzi glownie o ten czas zapisywany, bez problemu zrobie ze co jakis czas z flasha wysle sie nowa data i bedzie dobrze

a sprawdzanie czy nie sa juz jakies stare to chce rozwiazac cronem, tylko lipa ze najwczesniej moze sprawdzac co minute :/ ale jakos sobie poradze

(chyba

)
jeszcze raz dziekuje
Lars
19.11.2005, 10:37:54
ja robię tak:
mam pole w tabeli `users` o nazwie online_date
i tam zapisuję wartość:
<?php
?>
potem przy liście użytkowników online robie jeszcze raz
<?php
?>
i odejmuję
$newdata -
$data - i otrzymuję ilość sekund od ostatniej akcji
w ifie sprawdzam czy jest to wartość miejsza niż 60 sekund lub czy $data nie równa się 0 - jeżeli spełnia pierwszy warunek to listuję go na liście i wyświetlam zawartość pola online_place (gdzie teraz przebywa)
Pozdrawiam.
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.