
W dobie rosnącej dbałości o prywatność danych i cookies, wielu właścicieli stron WWW oraz programistów decyduje się na **własny system analityki WWW PHP MySQL**. Rozwiązania typu *self-hosted* dają pełną kontrolę nad zbieranymi informacjami, niezależność od zewnętrznych gigantów i często lepszą wydajność strony.
System GoodStat.pl to darmowy, autorski projekt, który udostępnia gotowy darmowy skrypt statystyk strony PHP. Dziś uchylimy rąbka tajemnicy i przeanalizujemy kluczowy fragment kodu naszego systemu, odpowiadający za rozpoznawanie unikalnych użytkowników i aktualizację statystyk w bazie MySQL.
Jak działa profesjonalny skrypt statystyk strony PHP?
Wielu początkujących programistów zadaje pytanie: jak zliczać unikalne wizyty PHP w sposób wydajny? Prostym licznikom opartym na plikach tekstowych brakuje precyzji i bezpieczeństwa. Profesjonalne podejście wymaga użycia bazy danych oraz precyzyjnego rozróżnienia między odsłoną (pageview) a unikalną wizytą (visit).
Poniżej prezentujemy fragment kodu z systemu GoodStat, który zarządza logiką dziennych odwiedzin przy użyciu biblioteki PDO. Jest to doskonała baza dla każdego, kto chce zbudować **własny system analityki WWW PHP MySQL**.
//#### NUMERY IP dzis
$nazwa_tab = 'nr_ip_dzis';
//-- Odczytanie dnia dodania nr ip do tabeli (utrzymanie bazy)
$stmt = $db->query("SELECT dzien FROM `$nazwa_tab` LIMIT 1");
$dzien_dodania = '';
if ($wiersz = $stmt->fetch(PDO::FETCH_ASSOC)) {
$dzien_dodania = $wiersz['dzien'];
}
// Kasowanie danych z tabeli, jeśli zaczął się nowy dzień
if($dzien_dodania !== '' && $dzien_dodania != date('j')){
$db->query("DELETE FROM `$nazwa_tab`");
}
Krok 1: Codzienne czyszczenie i optymalizacja
Kod rozpoczyna się od mechanizmu utrzymania bazy danych. To kluczowe dla wydajności. Zamiast przechowywać wszystkie IP z całego roku w jednej gigantycznej tabeli, GoodStat używa tymczasowej tabeli `nr_ip_dzis`. Skrypt sprawdza, czy pierwszy rekord w tabeli pochodzi z dzisiaj. Jeśli nie (rozpoczął się nowy dzień), tabela jest czyszczona (`DELETE FROM`). To sprawia, że operacje sprawdzania unikalności są błyskawiczne.
// Sprawdzamy czy IP istnieje (bezpieczne Prepared Statements)
$stm = $db->prepare("SELECT wejscia FROM `$nazwa_tab` WHERE `nr_ip` = :nr_ip LIMIT 1");
$stm->execute([':nr_ip' => $nr_ip]);
$wiersz_ip = $stm->fetch(PDO::FETCH_ASSOC);
Krok 2: Bezpieczne sprawdzanie unikalności IP
To jest moment krytyczny. Skrypt sprawdza, czy aktualny numer IP (`$nr_ip`) odwiedził już stronę dzisiaj. Zwróć uwagę na zastosowanie $db->prepare i execute. Używanie *Prepared Statements* (instrukcji przygotowanych) w PDO to jedyny bezpieczny sposób na integrację zmiennych w zapytaniach SQL, całkowicie eliminujący ryzyko ataków SQL Injection.
if(!$wiersz_ip){
// --- START: NOWA WIZYTA (IP NIE ISTNIEJE) ---
// 1. Dodanie nowego nr IP
$stmt_ins = $db->prepare("INSERT INTO `$nazwa_tab` (nr_ip, wejscia, dzien) VALUES (:nr_ip, '1', :dzien)");
$stmt_ins->execute([
':nr_ip' => $nr_ip,
':dzien' => date('j')
]);
// 2. Aktualizacja głównych liczników (WIZYTY Roczne/Godzinowe)
// 3. Aktualizacja WIZYTY DNI TYG
// 4. Aktualizacja WIZYTY GODZIN
// --- KONIEC: NOWA WIZYTA ---
} else {
// --- START: POWRÓT (IP JUŻ ISTNIEJE) ---
// Jedynie zwiększamy licznik odsłon dla tego IP, nie globalne wizyty
// --- KONIEC: POWRÓT ---
}
Krok 3: Logika Wizyty vs. Odsłony
Jeżeli IP nie zostało znalezione (if(!$wiersz_ip)), skrypt traktuje to jako nową unikalną wizytę. Wykonuje wtedy szereg operacji insert/update w wielu tabelach agregujących dane (dni tygodnia, godziny, roczne podsumowania). Dzięki agregacji, generowanie raportów w panelu GoodStat jest błyskawiczne.
Jeżeli IP już istnieje (else), skrypt zwiększa jedynie licznik odsłon dla tego konkretnego IP. Dzięki temu statystyki ogólne wizyt nie są zafałszowane przez jednego użytkownika odświeżającego stronę.
Dlaczego GoodStat to najlepsza alternatywa dla Google Analytics self-hosted?
Stworzenie takiego skryptu samodzielnie to dopiero początek. Potrzebujesz jeszcze panelu administracyjnego, wykresów, geolokalizacji, analizy systemów i przeglądarek.
System GoodStat oferuje to wszystko w formie gotowego, optymalizowanego przez lata pakietu. To idealna alternatywa dla Google Analytics self-hosted, szczególnie jeśli:
- Cenisz prywatność danych swoich i swoich użytkowników.
- Chcesz mieć lekki, darmowy skrypt statystyk strony PHP, który nie obciąża przeglądarki klienta ciężkimi skryptami JS.
- Szukasz rozwiązania, które instalujesz raz na własnym serwerze i zapominasz o abonamentach.
Nasz **własny system analityki WWW PHP MySQL** jest rozwijany z pasją, a przedstawiony kod dowodzi dbałości o standardy bezpieczeństwa i wydajności.
