Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Lista userow
Forum PHP.pl > Forum > Przedszkole
Masov
Witam smile.gif

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" dry.gif

Jakies pomysly? sad.gif
angel2953
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
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
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
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... sad.gif
Masov
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 tongue.gif), chyba ze to bedzie najlepsze rozwiazanie to sprobuje sie nauczyc smile.gif

moglbym prosic o krociotki algorytm co po kolei musimy zrobic? smile.gif
SongoQ
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
to mi juz bardzo duzo pokazalo smile.gif

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

dziekuje smile.gif
SongoQ
Ale jesli nauczysz sie SQL to na pewno dobrze na tym wyjdziesz
Guest
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 smile.gif a sprawdzanie czy nie sa juz jakies stare to chce rozwiazac cronem, tylko lipa ze najwczesniej moze sprawdzac co minute :/ ale jakos sobie poradze winksmiley.jpg (chyba tongue.gif )

jeszcze raz dziekuje smile.gif
Lars
ja robię tak:
mam pole w tabeli `users` o nazwie online_date
i tam zapisuję wartość:
  1. <?php
  2. $data=date('His');
  3. ?>


potem przy liście użytkowników online robie jeszcze raz
  1. <?php
  2. $newdata=date('His');
  3. ?>


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. Rkingsmiley.png
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.