Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][php] Zbieranie statystyk jak najniższym kosztem?
Forum PHP.pl > Forum > Bazy danych
luis2luis
Witam.

Potrzebuje zbierać informacje co użytkownik oglądał na stronie bloga. Jaki autorów, jakie kategorie i jakie artykuły dokładnie oglądał. Baza ta może być dosyć spora więc chciałbym zrobić tą operacje maxymalnie wydajną, żeby nie obciążać serwera.
Zbierane dane będą po każdym wywołaniu strony/podstrony.

Chce zrobić tabele:
  1. TAB_USER_STAT
  2. user_id, art_id, autor_id, kat_id, DATA


Myślałem, żeby zrobić cztery pierwsze kolumny jako KLUCZE jednoznaczne.
Wtedy robię operację :

  1. INSERT IGNORE INTO TAB_USER_STAT (user_id, art_id, autor_id, kat_id, DATA) VALUE (21,0,158,0,now() );


Wtedy jak będzie taki wpis, to już nie doda ponownie. Nie chciałbym , żeby nie powstawały duplikaty i nie chciałbym za każdym razem skanować bazę żeby sprawdzać, czy taki wpis jest.

Czy takie rozwiązanie będzie ok? Czy jeszcze jakiś pomysł macie?

P.S. Co mogę jeszcze zbierać w takim serwisie, żeby badać preferencje użytkownika?
trueblue
Chcesz zapisać informację tylko o pierwszym wejściu użytkownika do danej podstrony?

P.S. Zamiast INSERT NOW(), ustaw typ na TIMESTAMP i wartość domyślną na CURRENT_TIMESTAMP.
P.P.S. Wydaje mi się, że korzystając z Google Analitycs można przesyłać dodatkową zmienną, mógłbyś przesyłać jakiś identyfikator użytkownika.
luis2luis
Cytat(trueblue @ 4.03.2020, 20:56:21 ) *
Chcesz zapisać informację tylko o pierwszym wejściu użytkownika do danej podstrony?


Tak, tylko pierwsze wejście. Chce wiedzieć, że tą kategorie, ten artykuł oglądał. Fajnie jak bym wiedział ile razy, ale boje się przeciążenia serwera.
trueblue
To dodaj pole: ilość.
A zapytanie zmień na INSERT INTO ... ON DUPLICATE KEY UPDATE.
luis2luis
Cytat(trueblue @ 4.03.2020, 21:35:35 ) *
To dodaj pole: ilość.
A zapytanie zmień na INSERT INTO ... ON DUPLICATE KEY UPDATE.


OOO bardzo fajne, użyje to na pewno smile.gif


tak myślę, że dopóki użytkownik się nie zaloguje, to mam tylko session id. hmm..
Czyli po zalogowaniu muszę te rekordy z session id zamienić już na id konkretnego odwiedzającego stronę.
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-2024 Invision Power Services, Inc.