10-02-2012, 04:51 PM
au boulot j'ai fait un peu à l'arrache un système de compteurs
tout ce qu'on comptabilise l'est sous forme de compteur. pour chaque période minimale (pour nous, granularité de 24 heures) on crée un compteur que l'on incrémente tout simplement.
chaque compteur/période a un id, un type d'objet et un identifiant d'objet
genre
donc simplement notre personnage 23 est apparu 128 fois ajourd'hui et 124 fois demain (oui, mon appli prédit l'avenir, je ne l'avais pas précisé ?)
(bien sur tu peux optimiser en remplaçant le type d'objet par un ID de type d'objet)
ce système tout con et simple a implémenter te permet de regrouper en une seule table tous les objets que tu veux compter. Si ton ORM est sympa tu pourras facilement le faire sans avoir 1 table par type d'objet qui se rajoute. Si tu n'as pas d'ORM et/ou que chaque type d'objet est stocké de manière différente, tu vas passer longtemps à faire l'interface d'admin/consultation en pestant contre les gens qui ont implémenté toute ton appli. (mais comme dans ton cas ce sera toi tu ne pourras même pas t'insulter lâchement). Mais l'incrémentation des compteurs restera facile puisque un simple appel suffira.
genre un monstre est spawné sur une carte. tu rajoutes cette ligne dans le code :
Le plus chiant ce sera pour les images et les sons, il te faudra gérer non pas lors de l'appel par le navigateur (quoique il y ait moyen à apache de lancer un event lors de ces requêtes) mais dans la génération de ton HTML/javascript. Si tu n'as pas de table pour les images et les sons, il te faudra en faire une je pense.
tout ce qu'on comptabilise l'est sous forme de compteur. pour chaque période minimale (pour nous, granularité de 24 heures) on crée un compteur que l'on incrémente tout simplement.
chaque compteur/période a un id, un type d'objet et un identifiant d'objet
genre
Code :
1 | 2012-02-10 | personnage | 23 | 128
2 | 2012-02-10 | troll | 12 | 452
3 | 2012-02-11 | personnage | 23 | 124
donc simplement notre personnage 23 est apparu 128 fois ajourd'hui et 124 fois demain (oui, mon appli prédit l'avenir, je ne l'avais pas précisé ?)
(bien sur tu peux optimiser en remplaçant le type d'objet par un ID de type d'objet)
ce système tout con et simple a implémenter te permet de regrouper en une seule table tous les objets que tu veux compter. Si ton ORM est sympa tu pourras facilement le faire sans avoir 1 table par type d'objet qui se rajoute. Si tu n'as pas d'ORM et/ou que chaque type d'objet est stocké de manière différente, tu vas passer longtemps à faire l'interface d'admin/consultation en pestant contre les gens qui ont implémenté toute ton appli. (mais comme dans ton cas ce sera toi tu ne pourras même pas t'insulter lâchement). Mais l'incrémentation des compteurs restera facile puisque un simple appel suffira.
genre un monstre est spawné sur une carte. tu rajoutes cette ligne dans le code :
compteurs::incr(mob, $mob->id());
Le plus chiant ce sera pour les images et les sons, il te faudra gérer non pas lors de l'appel par le navigateur (quoique il y ait moyen à apache de lancer un event lors de ces requêtes) mais dans la génération de ton HTML/javascript. Si tu n'as pas de table pour les images et les sons, il te faudra en faire une je pense.