Je vous suggère de setter un dossier hors public pour y insérer les fichiers du cache car ce dossier doit être accessible en écriture.
class cache {
var $timeNow;
var $cacheLimit = 3600;
var $cacheFolder = '/home/fungold/sitecache/';
var $fileId;
var $fileExt = '.cache';
var $fileExist = false;
var $subName;
function setTime(){
$this->timeNow = date('U');
}
function setLimit($minutes){
if(!is_int($minutes)){die('Erreur Cache : setLimit(int).');}
$this->cacheLimit = $minutes * 60;
}
function setFolder($folder){
if(!is_dir($folder)){die('Erreur Cache : le dossier $folder n\'existe pas.');}
$this->cacheFolder = $folder;
}
function setSubName($subname){
$this->subName = $subname;
}
function setExt($ext){
$this->fileExt = $ext;
}
function setId($file){
$this->fileId = $this->cacheFolder . md5($file . $this->subName) . $this->fileExt;
}
function check(){
$this->setTime();
if(
file_exists($this->fileId)
and filemtime($this->fileId) >= $this->timeNow - $this->cacheLimit
){
$this->fileExist = true;
return true;
}
}
function put($contenu){
$ouvrir = fopen($this->fileId, 'w');
$ecrire = fwrite($ouvrir, gzdeflate(serialize($contenu)));
$fermer = fclose($ouvrir);
}
function get(){
return unserialize(gzinflate(file_get_contents($this->fileId)));
}
function delete($id){
$this->setId($id);
unlink($this->fileId);
}
}