Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]licznik osob online + licznik unikalnych odwiedzin
seba22
post
Post #1





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

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


Witam,

Stanąłem nad tym aby wykonać licznik unikalnych odwiedzin + licznik osób online..

Za osoby online nie mam pojęcia jak się wziąć... zero pomysłu.


Na unikalne wizyty mam 2 pomysły.

1) baza adresów IP które odwiedzały stronę, facet wchodzi, patrzymy czy jego ip jest w bazie, jeżeli tak, nie przesuwamy licznika, jeżeli nie było przesówamy o jeden.

2) pomysł chyba bardziej wydajny, ale bardziej zawodny - do sesji wstawiam następujące dane:

Sprawdzamy czy w sesji jest odwiedzałem = 1; jeżeli tak to nie przesówamy licznika, jeżeli nie, to przesówamy licznik i dodajemy wartość odwiedzalem = 1.

Po ponownym odświerzeniu nie zliczy nam faceta..

( pomysł pierwszy, chyba będzie pobierać zbyt wiele zasobów serwera, więc raczej skupił bym się na drugim).
Ale ostatecznie interesuje mnie wasze zdanie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)


A co sądzicie o wypisaniu osób będących aktualnie online ?
Jak to można wykonać ?

Pozdrawiam....
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bregovic
post
Post #2





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

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


Ok, zamiast tego:
  1. <?php
  2. $data_plus_5m_timestamp = mktime(date('H'), date('i')+5, 0, date('m'), date('d'), date('Y'));
  3. $data_plus_5m = date("Y-m-d H:i", $data_plus_5m_timestamp);
  4. ?>

Zrób tak:
  1. <?php
  2. $data_plus_5m = date("Y-m-d H:i", strtotime('+5 minutes'));
  3. ?>


Poza tym robisz zdecydowanie za dużo zapytań. Możesz to wszystko wykonać używając 3 zapytań (lub 2 jeśli użyjesz cron'a). Zapytania w kolejności wykonania:
  1. <?php
  2. $time = strtotime('-5 minutes');
  3. $user_id = $_SESSION['user_id']; // ID zalogowanego użyszkodnika
  4. mysql_query("DELETE FROM online WHERE last_active<'".$time."' OR session_id='".session_id()."';");
  5. mysql_query("INSERT INTO online SET last_active='".time()."', session_id='".session_id()."', user_id='".$user_id."';");
  6. mysql_query('SELECT DISTINCT * FROM online;');
  7. ?>

Ustawiasz default w user_id na 0. Każdy rekord z user_id=0 to nie zalogowany user, reszta to zalogowani.
Jeśli użyjesz cron'a, wrzuć do niego pierwsze zapytanie, bez session_id.

Ten post edytował bregovic 12.11.2008, 16:38:56
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.04.2026 - 11:03