Fork me on GitHub






Uservisit
Semi pro
Inscrit: 21/11/2004 17:40
De Un petit coin de Belgique
Messages: 826
Bonjour,

Un petit module bien sympa, mais gourmand en ressources!

J'ai regardé un petit truc dans le fichier index.php qui se trouve à la racine du module

$httprefmax '500';
      
$res mysql_query("SELECT * FROM ".$xoopsDB->prefix("visit_user_page")."");
      
$numrows mysql_num_rows($res);
      if ((
$numrows 1) >= $httprefmax) { 
        
mysql_query("delete FROM ".$xoopsDB->prefix("visit_user_page")." WHERE enregis = 'termine'");
        
mysql_query("delete FROM ".$xoopsDB->prefix("visit_user")." WHERE ip = 'termine'");
    }


A ce que je vois c'est une routine d'auto optimisation de la table lorsqu'elle contient plus de 500 enregistrements

mais pourquoi lire tout le contenu de la table pour avoir seulement le nombre d'enregistrements

Voici ce que je propose pour optimiser:

Citation :
$httprefmax = '1000';
$res = mysql_query("SELECT count(*) FROM ".$xoopsDB->prefix("visit_user_page")."");
$numrows = $xoopsDB->fetchRow($res);
if (($numrows[0] + 1) >= $httprefmax) {
mysql_query("delete FROM ".$xoopsDB->prefix("visit_user_page")." WHERE enregis = 'termine'");
mysql_query("delete FROM ".$xoopsDB->prefix("visit_user")." WHERE ip = 'termine'");
}


Je vois aussi un bug de logique
if ($visitname && (($tempe $tem) > 3600))    
        {
        
$addips "termine";
        
mysql_query("UPDATE ".$xoopsDB->prefix("visit_user")." SET ip='$addips' WHERE visitname='$lognom' AND ip='$addip'");
        
mysql_query("UPDATE ".$xoopsDB->prefix("visit_user_page")." SET enregis='$addips' WHERE nom='$lognom' AND enregis='$addip'");
        
$nvisit 1;
        
$tempes $tempe 1;
        
mysql_query("INSERT INTO ".$xoopsDB->prefix("visit_user")." VALUES ('','$lognom','$nvisit','$addip','$tempe','$tempes')");
        
mysql_query("INSERT INTO ".$xoopsDB->prefix("visit_user_page")." VALUES ('', '$lognom', '$page', '$nav', '$langue', '$addip')");
      }


Dans ce cas ci l'update pour mettre l'ip à "termine" ne se fait jamais puisque la variable contenant l'ip est modifié avant l'update, donc la clause where ne fonctionne pas

Je penses qu'il faut modifier comme suit:
Citation :
if ($visitname && (($tempe - $tem) > 3600))
{
// $addips = "termine";
mysql_query("UPDATE ".$xoopsDB->prefix("visit_user")." SET ip='termine' WHERE visitname='$lognom' AND ip='$addip'");
mysql_query("UPDATE ".$xoopsDB->prefix("visit_user_page")." SET enregis='termine' WHERE nom='$lognom' AND enregis='$addip'");
$nvisit = 1;
$tempes = $tempe + 1;
mysql_query("INSERT INTO ".$xoopsDB->prefix("visit_user")." VALUES ('','$lognom','$nvisit','$addip','$tempe','$tempes')");
mysql_query("INSERT INTO ".$xoopsDB->prefix("visit_user_page")." VALUES ('', '$lognom', '$page', '$nav', '$langue', '$addip')");
}


Merci de me vérifier au cas ou ce serait une erreur de ma part

Posté le : 14/06/2006 15:18

Edité par satanas sur 14/06/2006 15:35:38
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

37 Personne(s) en ligne (24 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 37 | Plus ...