[PHP] Système de cache
Mer 27 Sep 2006, 17:16
Langage : PHP
Niveau : Initié
Description : Système de mise en cache d'une page. Alors, imaginons que nous avons une page A avec une requete pour séléctionner des entrées dans la BDD. Comme on suppose que ces informations ne vont pas changer toutes les secondes, on va générer une page HTML nomée B qui contiendra toutes les informations que l'on a pris dans la BDD. Ainsi, au lieu de reprendre toutes les informations la prochaine fois que la page est demandée, on inclura simplement le fichier B dans le fichier A (j'explique mal, je sais )
Niveau : Initié
Description : Système de mise en cache d'une page. Alors, imaginons que nous avons une page A avec une requete pour séléctionner des entrées dans la BDD. Comme on suppose que ces informations ne vont pas changer toutes les secondes, on va générer une page HTML nomée B qui contiendra toutes les informations que l'on a pris dans la BDD. Ainsi, au lieu de reprendre toutes les informations la prochaine fois que la page est demandée, on inclura simplement le fichier B dans le fichier A (j'explique mal, je sais )
- Code:
<?php
$nom_fichier = 'Nom du fichier'; // Nom du fichier B
$temps = 'Temps entre chaque mise en cache'; // Temps entre chaque génération du fichier B
$EmplacementFichier = 'cache/' , $nom_fichier , ''; // Adresse du fichier sur votre site (ici dans le dossier "cache"
if (@filemtime($EmplacementFichier)<time()-($temps)) { // Si le fichier B n'a pas été généré depuis plus que le temps que l'on a donné, alors il faut le regénérer
ob_start();
// Ce qu'on veut mettre en cache
$contenu = ob_get_contents();
ob_end_flush();
$fichier = fopen("$EmplacementFichier", "w"); // On ouvre le fichier B
if ($fd) { // S'il existe, c'est mieux :p
fwrite($fichier,$contenu); // On écrit ce que l'on a généré
fclose($fichier); // On ferme le fichier !
}
} else {
include ($EmplacementFichier); // Sinon, si le fichier B a été généré depuis moins de temps que le temps donné, on l'inclue
}
?>
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|