» Mise en cache
Rédigé par :
Guillaume
Le : 15/04/2003 à 10:13
Hits : 6790
Cet article pour compléter l'astuce sur les caches, le but de cet article :
- Faire une requête dans la Base de donnée MySQL
- Créer un fichier de cache si il est inéxistant
- Mettre à jour le cache tout les jours
- Si le fichier de cache existe, le lire pour éviter grand nombre de requête sur votre Base de donnée.
Il faut bien penser à définir les variables pour la connexion à votre Base de donnée, c'est à dire les variables : $host, $login, $pass, $base dans un fichier extérieur de préférence et l'inclure ou sinon en début de code.
article_5.php
<?php
// ------------------------------------------------------------------------- //
// Mise en cache //
// ------------------------------------------------------------------------- //
// Le 15/04/2003 à 10h13 par Guillaume JIGUEL (guillaume@gphp.net) //
// ------------------------------------------------------------------------- //
// http://www.gphp.net/articles,5.php //
// ------------------------------------------------------------------------- //
// On définis la function de mise en cache (présente dans les astuces)
function cache($fichier, $contenu){
$fp = fopen("$fichier","w+");
if(!$fp){
return false;
}else{
fputs($fp,"$contenu\n");
fclose($fp);
return true;
}
}
// On nomme le fichier de cache
$fichier = "nouvelles.txt";
// On analyse si le fichier est déjà présent sur le serveur, si oui on examine sa date de création
if (file_exists($fichier)){
$creation = date("Ymd", filectime($fichier));
$time = date("Ymd", time());
}
// Si sa date de création est inférieur au jour actuel, ou bien que le fichier est inexistant => alors on crée le cache
if ($creation < $time || !file_exists($fichier)){
// Connexion à votre db
$db = mysql_connect("$host", "$login", "$pass");
mysql_select_db("$base",$db);
// On fait ici la requête SQL pour récupérer les champs de la table
$query_nouvelles = "SELECT id,date,titre FROM nouvelles ORDER BY id DESC LIMIT 0,5";
$result_nouvelles = mysql_query($query_nouvelles);
// On récupère les infos des champs dans $cache_nouvelles
$cache_nouvelles = "<div id=\"nouvelles\">";
while ($row_nouvelles = mysql_fetch_array($result_nouvelles)) {
$cache_nouvelles .= "<a href=\"nouvelles.php?id=".$row_nouvelles['id']."\" class=\"nouvelles\">[ ".$row_nouvelles['date']." ]:".$row_nouvelles['titre']."</a><br />\n";
}
$cache_nouvelles .= "</div>";
// On ferme la connexion à la db
mysql_close($db);
// On met en cache la requête récupérée
cache($fichier, $cache_nouvelles);
echo "<br />Mise en cache du cache";
}else{
// Si les conditions de création de cache ne sont pas remplies
// On affiche le fichier de cache qu'on à crée
readfile($fichier);
}
?>
» Commentaires
Pas de commentaires.
Vous devez être connecté en tant que Membre pour pouvoir poster un commentaire, Inscrivez vous ici !