RSS

[OT] NewStatPress: il plugin per le statistiche realtime su WordPress

7 Aprile 2011

Varie

percent-64

Ne avevo parlato molto tempo fa nel guestbook di un lavoro relativo al plugin StatPress per cercare di migliorarne le performance e adesso finalmente è nato NewStatPress, ovvero una versione evoluta di quel plugin.

StatPress di Daniele Lippi è un ottimo plugin per WordPress che monitora in tempo reale gli accessi al blog e da utilissime informazioni sugli utenti e le loro preferenze. Purtroppo il suo sviluppo è fermo da oltre un anno e la versione attuale ha diversi problemi:

  • il database con i log di accesso cresce in maniera considerevole: con 1.000.000 di record siamo sui 100MB di tabella, il che significa che un sito con un minimo di traffico come questo, impiegherà pochi mesi per avere un database che occupa molto spazio
  • i cambi usati per i record memorizzati sono tutti campi stringa, il che porta ad avere ancora più spazio sprecato e rallentamenti nelle query
  • non c’è nessun indice (tranne la chiave primaria su un contatore) sulla tabella il che rende ogni query eseguita molto lenta

I problemi che questo causa dovrebbero essere quindi già evidenti:

  • se avete un hosting gratuito, lo spazio mangiato dal database Mysql comincia a pesare molto e potrebbe presto esaurire lo quota gratuita offerta.
  • le query diventano sempre più lente man mano che il blog viene visitato. Questo si ripercuote in una lentezza di accesso al sito e nell’impossibilità di accedere al pannello riassuntivo del traffico e/o di effettuare un aggiornamento dei dati.

Quest’ultimo punto deriva dal fatto che negli hosting gratuiti, se una query Mysql impiega troppo tempo per essere eseguita, il caricamento della pagina viene interrotto (per non saturare il server che deve gestire molti siti web) dando un errore 505.

In effetti con StatPress, dopo 6 mesi di utilizzo, non ero più in grado di accedere alle pagine sopra dette, vanificando quello che il plugin dovrebbe permettere di accedere 🙁

L’unica funzione che Statpress offre per rimediare a questo è la cancellazione dei log vecchi: questo farà diminuire lo spazio occupato dal database, ma farà altresì perdere tutte le informazioni sui dati cancellati.

L’idea del nuovo plugin è nata con questo scopo: offire un servizio che invece di cancellare i log vecchi, ne prenda un sunto e lo memorizzi su apposite tabelle e integri queste informazioni nei report normalmente visualizzati.

Questo dovrebbe portare a un minor utilizzo di spazio su disco e mantenere lo storico di tutte le visite (ovviamente nello storico si perderebbero solo quelle informazioni puntuali, che però non hanno molto valore se più vecchie della finestra visualizzata in realtime sul pannello – che normalmente è settata su di un mese-)

 

Le modifiche per effettuare questo passaggio le ho già parzialmente create qualche mese fa, anche se rimaneva il problema delle performance che rallentano troppo la fase di creazione dello storico.

A questo punto ho però rilasciato il plugin in modo che abbia fin da subito dei miglioramenti tangibili (in parte già sperimentati da singoli utenti nel passato) anche se non quello più importante della storicizzazione:

  • utilizzo di campi non stringa per risparmiare spazio
  • utilizzo di indici per velocizzare le operazioni
  • aggiormanento delle definizione di OS e Browser che erano ferme da un anno

Con queste modifiche, viene risparmiato fin da subito spazio sul database (un 5% circa), che verrà però in questa fase abbondantemente mangiato dalla dimensione degli indici: il risultato però si vede subito, dato che dopo 2 anni son ripotuto entrare nel pannello coi dati riassuntivi in realtime che solitamente davano errore 505 🙂

Ovviamente il vero risparmio di spazio si otterrà quando verà attivata la storicizzazione dei dati, ma già allo stato attuale si hanno questi benefici di performance non trascurabili.

Ovviamente ci sono dei piccoli problemi da sistemare:

  • alcuni utenti rilevano stringhe di connessione con ? (forse è un problema legato alla codifica caratteri usata e potrebbe essere presente nello StatPress originale)
  • la funzione di numero utenti presenti online al momento da sempre 0 a causa di un problema di mysql che non accetta il dato di timestamp passato. La soluzione c’è ma sto valutando se leggere il timestamp da MySql (tempo universale) o dalle impostazione di WordPress che gira sul server (e che quindi tiene conto di fuso orario/ora legale).
  • alcuni utenti installano altri applicativi sotto la directory di WordPress e vorrebbero poter escludere tale directory dalla rilevazione accesso, cosa che ora non è possibile ne in NewStatPress, ne in StatPress.

Verrà presto attivato un nuovo indice che dovrebbe migliorare ulteriormente le performance delle query del plugin (al momento ne sto valutando l’efficacia…)

Per finire, se uno utilizzava StatPress, deve disattivarlo prima di attivare NewStatPress e, allo stato attuale, può passare da uno all’altro senza problemi evidenti. In futuro la compatibilità sarà rotta nel senso che le tabelle di NewStatPress relative allo storico non saranno visibili in StatPress.

Se siete webmaster non vi rimane che provare il plugin che trovate a questo indirizzo: http://newstatpress.altervista.org e portare le vostre opinioni e suggerimenti per migliorarlo.

No comments yet.

Leave a Reply