Votre campagne ici    
Nous sommes le vendredi 29 août 2008    


Accueil
Accueil





Accueil  Les scripts  Le Cache  
Mise en ligne : lundi 29 mai 2006    
Par : CladX    

Voici un exemple de mis en cache de pages web (contenant par exemple des requêtes sql) que j’ai élaboré afin de réduire le temps d’accès à certaines pages de mon site. Le principe est de vérifier l’état du cache (sa durée de vie) : si celui-ci a expiré, on recrée le cache et on l’affiche. Sinon, on affiche directement le cache. L’idée m’est venu en étudiant le système de parsing des news de phpinfo.net.

Note : On peut naturellement donner l’extension que l’ont veut (.htm, .txt, .xml etc...). On peut se servir de ce moyen pour mettre à jour régulièrement et automatiquement des pages. Je ne prétends pas que ce système est optimal car je suis débutant et je sais que c’est très simpliste, mais ça marche !


<?php

// ------------------------------------------------------------------------- //
// Système de cache                                                          //
// ------------------------------------------------------------------------- //
// Auteur: Matthias Etienne <matt@php-test.com>                              //
// Web:    http://www.php-test.com                                           //
// ------------------------------------------------------------------------- //

/*
Voici un exemple de mis en cache de pages web (contenant par exemple des 
requêtes sql) que j'ai Ã©laboré afin de réduire le temps d'accès Ã  certaines 
pages de mon site. Le principe est de vérifier l'état du cache (sa durée de 
vie) : si celui-ci a expiré, on recrée le cache et on l'affiche. Sinon, on 
affiche directement le cache.
L'idée m'est venu en Ã©tudiant le système de parsing des news de phpinfo.net.
*/

?>

<?

//fichier fonctions.php

/*******************************************
Fonction de verification de l'etat du cache
********************************************/
// duree cache en secondes !

function Verif_cache($fichier_cache$duree_cache){

    if(
is_file($fichier_cache) == true){
        
$modification_time filemtime($fichier_cache);
        
$actuel_time time();

        if((
$actuel_time $modification_time)>$duree_cache){
            return 
false;
        }else{
            return 
true;
        }
    }
}

/********************************************
Fonction de creation du cache
*********************************************/
function Creer_cache($fichier_cache,$contenu){
    
$fp=@fopen("$fichier_cache","w+");
    if(!
$fp) {return false;}
    else{
        
fputs($fp,"$contenu\n");
        
fclose($fp);
        return 
true;
    }
}
?>

<?
//fichier exemple.php
include "fonctions.php"//on inclut les fonctions

/* on vérifie l'ancienneté du cache grace Ã  la fonction
Verif_cache. La durée est exprimée en secondes.
On met donc 604800 pour une semaine
*/

if(!Verif_cache("edito.cache.htm"604800)){

    
// Cas où le cache est expiré (la fonction 
    //     renvoie false)
    // on fait donc la requete

    
mysql_connect("$serveur","$user","$password"
    or die (
"Impossible de se connecter a mysql !");
    
mysql_select_db($base) or die ("Impossible d' acceder Ã  la base !!!");
    
$resultat mysql_query("select * from edito order by date desc Limit 1");
    
$num mysql_num_rows($resultat);

    if (
$num!=0)
    {
      while (
$res=mysql_fetch_row($resultat))
      { 
        
$titre mysql_result($resultat,$i,"titre");
        
$Date mysql_result($resultat,$i,"date");
        
$texte mysql_result($resultat,$i,"texte");

    
//On crée une variable $cache dans laquelle 
    // on met le contenu du futur cache

        
$cache.="$titre le $Date";
        
$cache.="<br>$texte";
      }
    }

    
// ON CREE LE CACHE
    
if(!Creer_cache("edito.cache.htm","$cache")){
        
// cas où erreur
        
echo "Impossible de créer le cache.";
        
mysql_close();
    }else{
        
// le cache a Ã©té recréé: on l'inclu ds la pge
        
include "edito.cache.htm";
        
mysql_close();
    }

}else{
    
// si le cache n'a pas expiré on l'inclu.
    
include "edito.cache.htm";  
}

?> 


--- Réagir à cet article ---