Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1502 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Statistiques Php/Sql Allégé

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Statistiques Php/Sql Allégé

n°1783829
grosbin
OR die;
Posté le 08-09-2008 à 12:02:24  profilanswer
 

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 :D
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 :D


Message édité par grosbin le 08-09-2008 à 16:34:53

---------------
Photos Panoramiques Montagnes Haute Savoie
mood
Publicité
Posté le 08-09-2008 à 12:02:24  profilanswer
 

n°1784029
omega2
Posté le 08-09-2008 à 16:58:00  profilanswer
 

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?

n°1784173
grosbin
OR die;
Posté le 08-09-2008 à 20:53:43  profilanswer
 

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 :
  1. if($_SESSION[ResultatSouhaite])DIE();


ça se combine super bien avec les cookies increvables de google analytics


Message édité par grosbin le 08-09-2008 à 20:56:04

---------------
Photos Panoramiques Montagnes Haute Savoie
n°1784296
omega2
Posté le 09-09-2008 à 10:23:07  profilanswer
 

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.


Message édité par omega2 le 09-09-2008 à 10:43:51
n°1784368
grosbin
OR die;
Posté le 09-09-2008 à 12:12:58  profilanswer
 

Très joli benchmark :) J'apprécie fortement il a sa place dans les topics sql


---------------
Photos Panoramiques Montagnes Haute Savoie
n°1785631
Nasga
Posté le 11-09-2008 à 15:31:52  profilanswer
 

Citation :

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.


 
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 :p).

n°1785699
grosbin
OR die;
Posté le 11-09-2008 à 17:01:27  profilanswer
 

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 :p).


Tu peux notamment te baser sur le cookie increvable de google analytics pour faire tes propres stats  :D

 


Message édité par grosbin le 11-09-2008 à 17:01:36

---------------
Photos Panoramiques Montagnes Haute Savoie
n°1785717
Nasga
Posté le 11-09-2008 à 17:31:44  profilanswer
 

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.

n°1785754
grosbin
OR die;
Posté le 11-09-2008 à 18:49:48  profilanswer
 

Les cookies google analytics ne sont pas increvables[edit]bétise[/edit]


Message édité par grosbin le 11-09-2008 à 18:50:55

---------------
Photos Panoramiques Montagnes Haute Savoie

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Statistiques Php/Sql Allégé

 

Sujets relatifs
[HTML/PHP] Test connexion routeur[PHP MYSQL]Jointures de tables
Word & Publipostage SQL ServerPHP et Ports séries
conseil pour big requete SQL[résolu] [PHP] Forcer le type d'une variable
Manipuler une BdD (Access ou SQL) en VBSSQL reporting services, exporter rapport => XLS
[PHP] Trier résultats sans effectuer une nouvelle recherche[PHP] Formulaire ...
Plus de sujets relatifs à : Statistiques Php/Sql Allégé


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR