Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][php] Zbieranie statystyk jak najniższym kosztem?
luis2luis
post 4.03.2020, 20:53:32
Post #1





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

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


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?

Ten post edytował luis2luis 4.03.2020, 21:01:52
Go to the top of the page
+Quote Post
trueblue
post 4.03.2020, 20:56:21
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


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.

Ten post edytował trueblue 4.03.2020, 20:57:35


--------------------
Go to the top of the page
+Quote Post
luis2luis
post 4.03.2020, 21:04:53
Post #3





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

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


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.


Ten post edytował luis2luis 4.03.2020, 21:10:09
Go to the top of the page
+Quote Post
trueblue
post 4.03.2020, 21:35:35
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


To dodaj pole: ilość.
A zapytanie zmień na INSERT INTO ... ON DUPLICATE KEY UPDATE.


--------------------
Go to the top of the page
+Quote Post
luis2luis
post 4.03.2020, 23:46:28
Post #5





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

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


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ę.

Ten post edytował luis2luis 4.03.2020, 23:57:14
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 16:41