2012-06-13 15 views
7

Eseguo un sito Web di directory locali (si pensi yelp/yell.com ecc.) E devo fornire dati analitici alle aziende elencate sul sito.Monitoraggio utenti - Analisi del sito Web PHP/MySQL personalizzato

ho bisogno di seguire il seguente:

1) Numero di visitatori delle pagine specifiche (es: i widget di Jim era visto 65 volte)

2) Numero di volte che un utente fa clic su un collegamento (vale a dire: 25 utenti hanno fatto clic per visitare il tuo sito Web)

Sono in grado di farlo semplicemente aggiungendo uno al numero pertinente ogni volta che si verifica un'azione.

Quello che vorrei essere in grado di fare è dividere questo in intervalli di date, ad esempio, ultimi 30 giorni, ultimi 12 mesi, sempre.

Come si memorizzano questi dati nel database? Ho solo bisogno della teoria, non del codice! Se qualcuno può spiegare il modo migliore per memorizzare queste informazioni, sarei estremamente grato.

Ad esempio, si utilizza una tabella per le date, una per le pagine/i collegamenti e un'altra per i dati utente (collegamenti selezionati/pagine visitate)? L'unica soluzione che ho finora è quella di aggiungere una nuova riga al DB ogni volta che si verifica una di queste azioni, che non sta andando in scala molto bene.

Grazie a tutti coloro che possono aiutare.

+2

perché reinventare la ruota? dai un'occhiata a http://piwik.org o al grande fratello google analytics;) – cypherabe

+0

Puoi ridurre il numero di nuove righe se non vuoi un'analisi troppo accurata. Come invece delle attività del negozio in base al timestamp (int 10, suppongo), è possibile raggrupparle/memorizzarle di giorno. A proposito, non è una soluzione "definitiva". – HBv6

risposta

3

Non vorrei reinventare la ruota e utilizzare soluzioni già disponibili come Piwik. Può effettivamente leggere i tuoi normali blog per fornire tutte le informazioni richieste.

Se per qualche motivo hai ancora bisogno di una soluzione personalizzata, non salverei i dati di tracciamento in intervalli, ma piuttosto usare il tempo esatto e i dati url per ogni singola chiamata di pagina (ciò che il tuo normale blog fornisce). I dati accumulati dovrebbero essere generati al volo nella sezione logica, ad es. attraverso una vista SQL:

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

Grazie per la tua risposta, Lars. Ho già G-Analytics sul sito, ma ho bisogno di creare una pagina personalizzata in cui ogni utente che ha un account con noi può accedere e vedere le proprie statistiche (piuttosto che statistiche a livello di sito). Quindi dovresti salvare ogni azione su una nuova riga nel database con un timestamp? quindi usare MySQL per mostrare solo i dati degli ultimi 30 giorni, 12 mesi ecc ...? – drandom

+0

Memorizza ogni singola visualizzazione di pagina e link facendo clic su una timestamp una soluzione scalabile? Potrei finire con milioni di file di dati abbastanza velocemente, no? grazie ancora per il tuo tempo Lars – drandom

+1

Sì, il tuo sistema sarà già quello nei weblog del tuo server web, che è in realtà più lento di mettere i dati nel tuo database SQL preferito. Poiché la parte logica verrà eseguita solo durante la visualizzazione delle statistiche, è possibile creare una tabella di cache invece di una vista, che viene rigenerata ogni minuto circa e scartare i dati di log, dopo che non è più necessario (o ridurli a dati cumulativi per riferimento successivo, ad esempio alle informazioni giornaliere dopo 6 mesi). Credo che PiWik abbia la possibilità di avere clienti, quindi potresti usarlo per distinguere diversi siti web da diversi tuoi clienti. – Lars

Problemi correlati