2012-06-13 30 views
7
Niestandardowe PHP/MySQL WWW Analytics

uruchomić lokalną witrynę katalogów (myślę Yelp/yell.com etc) i trzeba dostarczyć dane analityczne do firm notowanych na miejscu.Śledzenie Użytkownicy -

muszę śledzić następujące:

1) Liczba odwiedzających do konkretnych stron (tj widgety Jima był oglądany 65 razy)

2) Ilość razy użytkownik kliknie link (tj: 25 użytkowników kliknął do odwiedzenia witryny internetowej)

jestem w stanie to zrobić, po prostu przez dodanie jednego do odpowiedniego numeru za każdym razem działanie występuje.

Co chciałbym zrobić, to podzielić to na zakresy dat, na przykład, ostatnie 30 dni, ostatnie 12 miesięcy, cały czas.

Jak przechowywać te dane w bazie danych? Potrzebuję tylko teorii, a nie kodu! Jeśli ktoś może wyjaśnić najlepszy sposób przechowywania tych informacji, byłbym niezmiernie wdzięczny.

Na przykład, czy mogę użyć jednej tabeli dla dat, po jednym dla stron/linków, a drugi dla danych użytkownika (linki kliknął/odwiedzanych stron)? Jedynym rozwiązaniem do tej pory jest dodanie nowego wiersza do bazy danych za każdym razem, gdy dojdzie do jednej z tych akcji, która nie będzie bardzo dobrze skalowana.

Dziękuję każdemu, kto może pomóc.

+2

Po co od nowa używać koła? spójrz na http://piwik.org lub starszy brat google analytics;) – cypherabe

+0

Możesz zmniejszyć liczbę nowych wierszy, jeśli nie chcesz zbyt dokładnych analiz. Podobnie jak w przypadku działań związanych z przechowywaniem według znacznika czasu (int 10, przypuszczam), można je grupować/przechowywać w ciągu dnia. To nie jest "ostateczne" rozwiązanie. – HBv6

Odpowiedz

3

bym nie wyważać otwartych drzwi i użyć już dostępne rozwiązania, takie jak Piwik. Może rzeczywiście przeczytać twoje normalne blogi, aby dostarczyć wszystkie informacje, o które prosiłeś.

Jeśli z jakiegoś powodu nadal potrzebujesz niestandardowego rozwiązania, nie zapisałbym danych śledzenia w zakresach, ale użyłbym dokładnego czasu i adresów URL dla każdego pojedynczego wywołania strony (co zapewnia Twój zwykły dziennik). Skumulowane dane powinny być generowane "w locie" w sekcji logicznej, np. przez widok SQL:

SELECT count(url),url 
FROM calllog 
WHERE calldate > NOW()-30days 
+1

Dziękuję za odpowiedź, Lars. Mam już G-Analytics na stronie, ale muszę utworzyć niestandardową stronę, na której każdy użytkownik mający konto w naszym serwisie może się zalogować i zobaczyć własne statystyki (zamiast statystyk dotyczących całej witryny). Więc chcesz zapisać każdą akcję do nowego wiersza w bazie danych z sygnaturą czasową? następnie użyć MySQL, aby wyświetlać tylko dane z ostatnich 30 dni, 12 miesięcy itd ...? – drandom

+0

Czy przechowywanie każdej pojedynczej odsłony i kliknięcia linku z datą czasową jest skalowalnym rozwiązaniem? Mógłbym szybko skończyć z milionami wierszy danych, nie? jeszcze raz dziękuję za Twój czas Lars – drandom

+1

Tak, twój system będzie już działał w blogach twojego serwera, który jest wolniejszy niż umieszczanie danych w twojej ulubionej bazie danych SQL. Ponieważ część logiczna zostanie wykonana tylko podczas przeglądania statystyk, możesz utworzyć tabelę pamięci podręcznej zamiast widoku, która jest regenerowana co minutę i odrzucić logdata, gdy nie jest już potrzebna (lub zredukować ją do skumulowanych danych dla późniejsze odniesienie, np. do codziennych informacji po 6 miesiącach). Uważam, PiWik ma możliwość posiadania klientów, dzięki czemu można go używać do rozróżniania różnych stron internetowych od różnych klientów. – Lars