<?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_name, false, $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($fp, ob_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');
?>