|
freud 113
| Posté : 09-12-2011 15:49
Salut la communauté,
J'ajoute sur mon site (version sable) quelques statistiques qui ne sont pas inintéressantes et que l'on ne peut avoir via Analytics ou autre:
- nombre d'inscriptions journalières avec proportion de gens qui s'inscrivent à la newsletter
- nombre de discussions créées par jour et nombre de posts, permettant aussi de déterminer le nombre moyen de posts par discussions.
Voici ce que ça donne sur 30 jours :
Graph 1 on a en bleu clair et en noir le nbr d'inscriptions, et en bleu foncé le nbr d'inscrits à la newsletter parmi ces nouveaux membres. A droite les totaux sur 30 jours avec le pourcentage d'inscrits à la newsletter.
Graph 2 en bleu clair et en noir le nbr de posts journaliers tous forums confondus, et en bleu foncé écriture blanche le nbr de topics créés. A droite les totaux et la moyenne de posts par topic.
Je compte faire de même avec des stats mensuelles pour comparer les tendances d'un mois à l'autre et éventuellement d'une année à l'autre.
Pour éviter à chaque affichage des stats de multiplier les requêtes (recherches sur la totalité des membres ou des posts, etc) j'ai créé une routine exécutée à heure fixe tous les jours par une tâche Cron sur serveur Unix (cela suppose d'avoir un hébergement qui le permette).
J'ai donc une fonction sur un fichier baptisé 'routine.php' qui tous les jours fera le bilan de la veille et enregistrera les données dans la BDD (nouvelle table).
Pour visualiser les stats je n'ai plus qu'à aller chercher les infos sur les 30 derniers jours et afficher le tout sous forme de graphique (simples div imbriqués dans un tableau).
Voilà, pour ceux que ça intéresse je joins une archive contenant la procédure (fichier au format PHP pour faciliter la lecture des codes) et une copie de ma table de statistiques.
Lien vers l'archive (.rar)
Attention (Edit du 15/12/2011): Les fonctions d'affichage on été modifiées. Prendre connaissance des messages suivant avant de tester.
Quelques précisions :
Le format actuel des dates d'inscriptions dans la table 'users' ne facilite pas les recherches pour ce genre de données. J'ai ajouté une colonne à la table 'users' au format 'datetime' pour les stats et conservé l'ancienne par soucis de compatibilité avec les fonctions natives.
Cela suppose de modifier le fichier user.php pour enregistrer les dates dans cette nouvelle colonne.
Je me suis amusé à retourner l'historique des inscriptions passées (30 derniers jours) vers la table de statistiques pour tester le code. La procédure n'est pas fournie car c'est facultatif. Il suffit d'attendre 1 mois pour avoir de premières données.
Peut-être que cela donnera des idées pour les prochaines versions d'NPDS, ou peut-être aussi avez-vous déjà inclut ou prévu ce genre de chose.
++
Message édité par : freud / 09-12-2011 15:52
Message édité par : freud / 15-12-2011 13:47 |  Profil www
|
|
developpeur 24581
| |
freud 113
| Posté : 11-12-2011 10:24
Re,
Petite anomalie dans la fonction journalière EveryDay() de routine.php
Le champ recherché de la deuxième requête est 'lnl' alors qu'il devrait être 'user_lnl'
SELECT count(user_dateinscr) FROM users WHERE user_l nl=1 AND user_dateinscr BETWEEN DATE_SUB(CURDATE(), IN TERVAL 1 DAY) AND CURDATE()
Je modifierais l'archive lorsque j'aurais inclut les stats mensuelles. Pas trop le temps tout de suite maintenant.
++ |  Profil www
|
|
freud 113
| Posté : 13-12-2011 11:18
Grr, pas moyen de poster mon message. J'ai beau modifier ou supprimer du contenu je suis tjrs envoyé sur la page d'accueil sans aucune explication sur ce qui ne lui plait pas.
Je remarque ça à chaque fois que je tente de poster un message assez conséquent. 10 minutes de rédaction et au moins autant à chercher ce qui cloche...
Ce message étant simple ça devrait aller, voyons si ça passe plus facilement en éditant.
Edit :
Salut,
Quelques améliorations et ajout des stats mensuelles.
Aperçu des statistiques journalières
Sur les 30 derniers jours par défaut avec possibilité de choisir la date de début et le nombre de jours (max 31).
A droite du 1er graphique nous avons le total d'inscriptions et d'inscrits à la newsletter avec la moyenne entre parenthèses. En dessous le pourcentage d'inscrits à la newsletter, et encore en dessous la variance des inscriptions.
La variance permet de mettre en évidence les écarts excessifs. Dans l'exemple elle est de 13 (Vi). Si pour une raison ou pour une autre le nombre d'inscriptions chute le dernier jour la variance va considérablement augmenter. Nous pouvons alors définir un seuil max (19 pour moi) en la calculant tous les jours via une routine Cron/php et se faire alerter par email passé ce seuil.
On pourrait imaginer la même chose avec le nbr de messages, le trafic ou les sessions à condition de les archiver au jour le jour. Bref ..
Aperçu des statistiques mensuelles
Les 12 derniers mois par défaut avec possibilité de modifier les dates d'analyse. 12 mois max mais ça peut être allongé.
Pour chaque mois on a respectivement le pourcentage d'inscrits à la newsletter et le nbr moyen de posts par discussions, avec à droite les totaux et moyenne globales sur l'année.
Un lien figure en haut à droite de chacune des pages pour basculer en stats mensuelles ou journalières.
J'ai mis le tout sur une page php spécifique. Vous pouvez tester ici encore quelques jours après quoi je verrouillerais son accès (admin).
Pour finir je vous livre mon fichier php
Je l'ai hébergé en .txt, il suffit donc de modifier l'extension.
Pour info les données absentes de la table de statistiques lors de l'affichage sont automatiquement calculées et enregistrées dans la BDD afin de ne pas avoir à relancer l'opération à chaque fois. Ca permet de s'affranchir de la routine journalière. Naturellement il faudra tout de même créer la nouvelle table, ajouter la colonne de date dans la table 'users' et mettre à jour le fichier user.php.
Attention toute-fois pour les premiers chargements de stats mensuelles car la table de stats étant vide le serveur ne va pas trop apprécier. Il va devoir récolter tous les membres inscrits, posts et discussions créées par jours, les enregistrer et ce pour 12 mois. Soit 365 recherches multiplié par 3(users, forumtopics, posts), calculs et 365 enregistrements simultanés.
Préférez faire des stats journalières mois par mois dans un 1er temps, au moins pour 2011. Ensuite allez sur stats mensuelles, et faites vos stats sur des faibles intervalles (1 mois, 2 voir 3). Après tout dépend aussi du nombre d'enregistrements auxquels vous êtes confronté.
Edit 2: Bingo ! Je n'ai rien changé au contenu initial et ça passe.
Message édité par : freud / 13-12-2011 11:20 |  Profil www
|
|
Jireck 8502
| Posté : 13-12-2011 14:03
Bonjour,
C'est l'anti-sapm sur les URL...
Super Sympa
Bravo |  Profil
|
|
freud 113
| Posté : 13-12-2011 14:29
Bonjour Jireck,
Merci
J'ajoute tout de même qu'il y a forcément matière à optimiser tout ça.
Je me débrouille mais je suis loin d'être expert en développement. Je pioche ci et là au fil des besoins et adapte comme beaucoup.
Mon code n'a pas la prétention d'être parfait donc toutes les remarques d'éventuels testeurs seront les bienvenues ... |  Profil www
|
|
Jireck 8502
| Posté : 13-12-2011 21:05
bonsoir Freud,
Je viens de regarder rapidement ton code ...
Il faut passer les requetes sql via la lib sql de npds mais pas obligatoirement .... cela marche sans.
Il faut mieux segmenter le code avec des classes et id et la CSS avec ...
et le dernier truc c'est de mettre un fichier langue french et mettre la fonction pour traduire si on rajoute le fichier...
Je vois aussi de petites ameliorations mais on s'en fout...
TRES BON TRAVAIL !!!!!! |  Profil
|
|
freud 113
| |
Jireck 8502
| Posté : 16-12-2011 12:20
Tu veux le faire ne module ou autre ...???
|  Profil
|
|
developpeur 24581
| |
colonelwog 2044
| Posté : 21-12-2011 10:07
de base ce serai mieux non ?
dans la prochaine version ? |  Profil E-mail www
|
|
Jireck 8502
| Posté : 21-12-2011 11:34
en module ca serait bien |  Profil
|
|
colonelwog 2044
| Posté : 21-12-2011 12:43
en module c'est sur que la pas besoin d'attendre la prochaine version ... |  Profil E-mail www
|
|
freud 113
| Posté : 21-12-2011 18:02
Salut,
Je suis mal placé pour travailler sur la création d'un module, à moins de travailler sur une version vierge d'NPDS mais je n'ai aucune expérience en matière de modules. Pas trop le temps non plus.
Mais je veux bien collaborer avec quelqu'un qui maîtrise mieux la chose que moi (meta lang, etc.).
Ma version de stats plante depuis ma dernière mise à jour faut que je regarde ça.
Comme je l'ai dit plus haut j'ai ajouter à mon formulaire d'inscription une procédure d'activation du compte par email, et j'ai ajouté ce rapport compte créé / activé dans mes stats. Une fois un compte activé je n'ai plus besoin dans ma base de la clé d'activation. Je mets à la place la date et l'heure d'activation ce qui me permet de comparer avec la date d'inscription initiale, mais ça beug ... |  Profil www
|
|