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    

Il arrive souvent que certaines données affichées changent rarement, et sollicitent donc inutilement PHP et vos bases de données.

Ce système de mise en cache permet de ne faire cette opération que de temps en temps, il peut donc y avoir beaucoup de connexions, l’affichage proviendra directement d’un fichier généré et placé dans un répertoire particulier. Un exemple est fourni pour tester ce script.


<?php

// ------------------------------------------------------------------------- //
// Gestion d'un système de cache avec PHP4 + exemple d'utilisation.          //
// ------------------------------------------------------------------------- //
// Auteur: Frédéric Bouchery                                                 //
// Email:  frederic@bouchery.com                                             //
// Web:    http://www.bouchery.com/                                          //
// ------------------------------------------------------------------------- //

?>

<?php

// ------------------------------------------------------------------------- //
// cache.inc.php                                                             //
// ------------------------------------------------------------------------- //
//     Script développé par F. Bouchery [frederic@bouchery.com]              // 
// Ce script est entièrement libre de droits, mais je vous demanderai de     //
// laisser ce commentaire. Si vous voulez apporter des modifs intéressantes, //
// mailer moi le résultat. Merci.                                            // 
///////////////////////////////////////////////////////////////////////////////
 
// durée de mise en cache en secondes (900 = 15 minutes)
define('CACHE_TIME',900);

// nom du répertoire de cache sans "/" Ã  la fin
// Ce répertoire
define('CACHE_REP','cache');
                         
// Insère le fichier caché, si il est trop vieux, il met Ã  jour le fichier
// et insère le nouveau. Il est possible de préciser la durée de cache
// ainsi que le répertoire.
function cache($file_name$duration CACHE_TIME$directory CACHE_REP)
{          
    
$cache_file $directory.'/'.$file_name;
    if((
$time filemtime($cache_file)) && ((time() - $time) < $duration))
       
// Insertion du fichier caché
       
readfile($cache_file);
    else                          
       
// Mise Ã  jour et insertion du fichier caché
       
update_cache($file_namefalse$directory);
}

// Met Ã  jour le fichier caché et l'insère si "$clear" est Ã  false (false par
// défaut). Il est possible de préciser le répertoire de cache.
function update_cache($file_name$clear False$directory CACHE_REP)
{
    
ob_start();
    include(
$file_name);

    
// sauvegarde du contenu
    
if ($fp = @fopen($directory.'/'.$file_name,'w'))
    {
        
fputs($fpob_get_contents());
       
fclose($fp);
    }                       
    if (
$clear)
        
ob_end_clean();
    else
        
ob_end_flush();
}

?>


<?php

// ------------------------------------------------------------------------- //
// date.php                                                                  //
// ------------------------------------------------------------------------- //

// fichier Ã  mettre en cache
 
echo 'la date est : '.date('d/m/Y H:i:s');
 
?>

<?php
  
// ------------------------------------------------------------------------- //
// exemple.php                                                               //
// ------------------------------------------------------------------------- //
 
// --------------------------------------------------------------------------
// le script date donne la date et l'heure du jour, cette solicitation de
// l'analyseur PHP sera faite toutes les 15 minutes, ce qui veut dire que
// l'heure restera la même pendant 15 minutes.
// vous pouvez faire un test en fixant le temps de mise en cache (CACHE_TIME)
// Ã  5, et vous allez vite comprendre le fonctionnement :-)
// Il est bien Ã©videment idiot de faire ce genre de chose pour l'heure, mais
// lorsque les données proviennent d'une base, cela peut devenir rapidement
// intéressant !
// --------------------------------------------------------------------------
require 'cache.inc.php';
cache('date.php');

?> 


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