Artiphp - CMS open source et gratuit
Vous êtes ici » Accueil/Forum
Saisissez votre recherche
RechercherRechercher   Liste des MembresListe des Membres   S'enregistrerS'enregistrer    ProfilProfil 
Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 


Petite optimisation (une requête de moins par page)

 
Poster un nouveau sujet   Répondre au sujet    Artiloo.com Index du Forum -> Scripts et Add ons des membres
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Malouk



Inscrit le: 12 Juil 2003
Messages: 594

MessagePosté le: Jeu 13 Déc 2007 15:54    Sujet du message: Petite optimisation (une requête de moins par page) Répondre en citant

Pour ceux que ça intéresse, voici comment gagner une requête par page en mettant en cache le statut des modules

Dans le répertoire outils, créer un fichier cache_statut.php et donner les droits d'écriture dessus.

Dans le fichier artzone/pagestatut.php, en dessous de :

Code:
    $requete="update ".$extension."module set visumodule='$newstatut' where id_module='$id_mod'";
    $result=mysql_query($requete, $link);

    $newstatut="";
    $id_mod="";


Ajouter ceci :

Code:

//------------ Ecriture du cache ----------------
$requete10="select nomModule, visumodule, modoption from ".$extension."module";
$result10=mysql_query($requete10, $link);

$cache="<?php\n";
while ($autorisation=mysql_fetch_object($result10)) {
$cache .= "\$module_".$autorisation->nomModule." = ".$autorisation->visumodule.";\n";
$cache .= "\$modoption_".$autorisation->nomModule." = ".$autorisation->modoption.";\n";
}
$cache.="?>";
   
$Fnm = ("../outils/cache_statut.php");
 chmod ("$Fnm",0666);

 //lecture et écriture
 $inF = fopen($Fnm,"w");

 //pour passer à la ligne, écrire \n
 fputs($inF,$cache."\n");

//Enfin fermer le fichier
 chmod ("$Fnm",0644);
 fclose($inF);
// fin ecriture
//-----------------------------------


Dans Admin statut cliquez sur un des boutons de statut d'un module pour générer le cache.

Ensuite pour chaque pages des modules modifier le bout de code qui vérifie les autorisation. Par exemple pour les news :


Code:
/ autorisation
//--------------------
$requete10="select visumodule, modoption from ".$extension."module where nomModule='News'";
$result10=mysql_query($requete10, $link);
$autorisation=mysql_fetch_object($result10);

$SESSION_STATUT=$_SESSION['SESSION_STATUT'];

if ($autorisation->visumodule=='1') {
     if ($SESSION_STATUT!="artadmin" && $SESSION_STATUT!="auteurqal" && $SESSION_STATUT!="auteur" && $SESSION_STATUT!="inscrit") { 
        header("Location: ../outils/erreur.php?ec=2");
        exit();
     }
} elseif ($autorisation->visumodule=='2') {
     if ($SESSION_STATUT!="artadmin" && $SESSION_STATUT!="auteurqal" && $SESSION_STATUT!="auteur") { 
        header("Location: ../outils/erreur.php?ec=2");
        exit();
     }
} elseif ($autorisation->visumodule=='3') {
     if ($SESSION_STATUT!="artadmin" && $SESSION_STATUT!="auteurqal") { 
        header("Location: ../outils/erreur.php?ec=2");
        exit();
     }
} elseif ($autorisation->visumodule=='4') {
     if ($SESSION_STATUT!="artadmin") { 
        header("Location: ../outils/erreur.php?ec=2");
        exit();
     }
}


Ca devient :

Code:
// autorisation
//--------------------
  include("../outils/cache_statut.php");

$SESSION_STATUT=$_SESSION['SESSION_STATUT'];

if ($module_News=='1') {
     if ($SESSION_STATUT!="artadmin" && $SESSION_STATUT!="auteurqal" && $SESSION_STATUT!="auteur" && $SESSION_STATUT!="inscrit") { 
        header("Location: ../outils/erreur.php?ec=2");
        exit();
     }
} elseif ($module_News=='2') {
     if ($SESSION_STATUT!="artadmin" && $SESSION_STATUT!="auteurqal" && $SESSION_STATUT!="auteur") { 
        header("Location: ../outils/erreur.php?ec=2");
        exit();
     }
} elseif ($module_News=='3') {
     if ($SESSION_STATUT!="artadmin" && $SESSION_STATUT!="auteurqal") { 
        header("Location: ../outils/erreur.php?ec=2");
        exit();
     }
} elseif ($module_News=='4') {
     if ($SESSION_STATUT!="artadmin") { 
        header("Location: ../outils/erreur.php?ec=2");
        exit();
     }
}


Et dans les modules avec commentaire, modifier les :

Code:
$autorisation->modoption


par :

Code:
$modoption_News



Pour chaque module, il faut reprendre ce code en y modifiant la variable $module_News par la variable qui convient au module. Il suffit de regarder dans le fichier cache_statut.php le nom de la variable une fois qu'il a été généré


Dernière édition par Malouk le Dim 19 Avr 2009 19:08; édité 2 fois
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
jidgi



Inscrit le: 04 Nov 2005
Messages: 211
Localisation: Paris

MessagePosté le: Lun 07 Jan 2008 14:45    Sujet du message: Répondre en citant

Bonjour,
Le gain est-il significatif, car c'est le chargement d'un fichier en lieu et place d'un accès simple à la base? En effet, la modif est simple, mais longue à mettre en oeuvre.
Sinon qu'en penses-tu Jimro?

@+
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail
jimro



Inscrit le: 07 Oct 2004
Messages: 6918

MessagePosté le: Mar 08 Jan 2008 21:56    Sujet du message: Répondre en citant

Bonjour,

Malouk qui n'est pas un amateur te répondrait tout aussi bien que moi

L'accès à un fichier est en principe toujours plus rapide qu'à une base de données. Le gain peut être très important pour les mutualisés où, bien souvent, le serveur de bases de données est différent de celui du site et d'un accès généralement lent.

Ce système prend tout son sens quand il est appliqué à chaque fois que possible sur un site. Ensuite, l'intérêt dépend surtout du niveau de fréquentation du site.


jimro
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Malouk



Inscrit le: 12 Juil 2003
Messages: 594

MessagePosté le: Lun 11 Fév 2008 11:05    Sujet du message: Répondre en citant

J'ai oublié quelque chose, le premier post est éditer. Ca ne concerne que les modules avec commentaires.

Le fichier pagestatut.php change quelque peu (un ligne ajoutée) et il y a le rajout en fin de post à faire (modifier les variables $autorisation->modoption).

Je ne m'en était pas rendu compte car je n'utilise pas le système de commentaire de artiphp
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Artiloo.com Index du Forum -> Scripts et Add ons des membres Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com