Statistiques Php/Sql Allégé - PHP - Programmation
Marsh Posté le 08-09-2008 à 16:58:00
Citation : <script src="stats.php"> |
Donc :
1) pour chaque affichage d'une page tu dis au navigateur qu'il doit demander un autre fichier au serveur
2) si le javascript est désactivé (tous les navigateurs récent le permettent) tu ne traces plus rien.
3) t'es obligé de noter en session d'où vient la personne ... avec le risque de ne plus avoir la bonne information dans ta session si le visiteur utilise le bouton "page précédente".
J'ai déjà eu à faire ce genre de chose et en fait le plus efficace c'est d'inclure une fonction php qui enregistrera directement les données dans la base de donnée sans passer par du javascript. En plus tu notes déjà en session les informations utile alors pourquoi est ce que tu t'embêtes à faire aussi compliqué alors qu'il est si simple d'inscrire directement les données dans la base de données quand on les a sous la main?
Marsh Posté le 08-09-2008 à 20:53:43
Ce système que j'utilise déjà .. mais j'ai peur qu'il finisse par rendre le temps de calcul des pages trop lourds à la longue ..
Reste peu de gens qui n'activent pas le javascript .. donc j'ai placé tout le traitement dans ce fichier déporté .. et c'est plutot léger ( 100 ms en moyenne ) pour enregistrer les données que je veux, quand elles sont là
J'avorte le processus une fois le mot clé ou le referrer attrapé
Code :
|
ça se combine super bien avec les cookies increvables de google analytics
Marsh Posté le 09-09-2008 à 10:23:07
Avant que la recherche des mots clés qui ont amené le visiteur à ton site amène une lenteur notable, tu pourras mettre des dizaines de milliers (voire même des centaines de milliers) de données dans ta base même si t'utilises un vieux PC de l'an 2000 comme serveur.
En fait, le seul cas où ça peut être utile de déporter un traitement aussi rapide, c'est dans le cas d'un hébergeur gratuit qui met tellement de monde par serveur que même la page la plus basique rame. Mais même là, si tout le monde faisait pareil ça ne ferait qu'aggraver la situation plutôt que de régler le problème. Mieux vaut changer d'hébergeur si ça rame au point qu'un traitement aussi simple nécessite une telle mesure.
----------------
Exemple de vitesse chez free avec Mysql (les temps indiqué sont les temps d'exécution de la requête) :
sélection dans une table de 2000 lignes avec un like 'texte%' : 0.0157 sec
sélection dans une table de 34000 lignes avec un like 'texte%' : 0.0262 sec.
sélection dans une table de 34000 lignes avec un like '%texte%' : 0.1034 sec.
A noter que pour la table de 34000 lignes, le like a été fait sur un champ qui n'est pas indexé et dont le texte est généralement plus long qu'une URL. En pratique ta requête à toi sera plus rapide que les temps que j'ai obtenu.
Est ce que tu penses qu'il soit utile de déporter un traitement qui dure 1 centième de seconde au début et 1 dixième de seconde au bout de quelques années?
PS : Les tables sur lesquelles j'ai fait ces tests sont de vielles tables qui ne sont plus utilisé depuis des années, il y a donc peu de chance qu'elles ai été dans le cache de mysql avant que j'exécute la première requête.
EDIT : Fin d'écriture du message.
Marsh Posté le 09-09-2008 à 12:12:58
Très joli benchmark J'apprécie fortement il a sa place dans les topics sql
Marsh Posté le 11-09-2008 à 15:31:52
Citation : Exemple de vitesse chez free avec Mysql (les temps indiqué sont les temps d'exécution de la requête) : |
Lors d'un LIKE %string%, les indexes ne sont de toute façon pas pris en compte, c'est une limitation actuelle de mysql, la solution consiste à dupliquer le champs texte en l'inversant pour faire des recherches à l'intérieur d'une chaîne.
De plus pour le bench, sur un mutualisé tu aura toujours dès surprises, j'ai déjà eu bon nombre de timeout mysql car tout dépend de l'utilisation du serveur lors du bench et sachant que les mutualisés regroupe 200 utilisateurs minimum...
Depuis j'utilise uniquement sqlite sur les mutualisés et mysql sur des dédiés.
J'ai actuellement des systèmes de statistiques mais qui sont géré directement par mysql via des triggers / procédures (les 34000 lignes sont largement dépassés en une heure :x) et pour ce genre de besoins j'utilise plutot google analytics (j'aime pas trop réinventer la roue ).
Marsh Posté le 11-09-2008 à 17:01:27
Citation : J'ai actuellement des systèmes de statistiques mais qui sont géré directement par mysql via des triggers / procédures (les 34000 lignes sont largement dépassés en une heure :x) et pour ce genre de besoins j'utilise plutot google analytics (j'aime pas trop réinventer la roue ). |
Tu peux notamment te baser sur le cookie increvable de google analytics pour faire tes propres stats
Marsh Posté le 11-09-2008 à 17:31:44
J'ai jamais pensé à regarder les cookies google tiens ^^
Autre point pour ton bench, mysql utilise un cache, et donc une fois que la requête est en cache, pense a bien vider le cache avant de tester des requêtes, sinon un EXPLAIN peux être intéressant.
Marsh Posté le 11-09-2008 à 18:49:48
Les cookies google analytics ne sont pas increvables[edit]bétise[/edit]
Marsh Posté le 08-09-2008 à 12:02:24
Bjr, Mon but est de créer un module de stats Php/Sql Allegé ( hors logs Apache & léger en ressources )
Analyse portée sur Referrer mis en session au 1ère ligne du site, puis intervient la lecture ou non du cache
Le script inséré sous la forme <script src="stats.php"> traite les infos de session pour retracer :
- Les mots clefs d'arrivée via moteurs de recherche
- ou classement Full Referer , rien besoin d'autre car logs apache
=> Existe t-il une classe javascript qui enregistre les interactions visiteur / page (hotspots sous phpmyvisite) qui pourrait se jouer tel un film à l'écran ?
Mon système gère à ce jour :
keywords, referer, multiples sites, hits/conversions via keywords / referer
et permet de faire le relevé des positions des keywords sur moteurs de recherches
Si des gens se sont aventurés sur des chemins similaires, merci de faire part de vos expériences / suggestions
Message édité par grosbin le 08-09-2008 à 16:34:53
---------------
Photos Panoramiques Montagnes Haute Savoie