Florian.
Premium
- Inscription
- 8 Août 2012
- Messages
- 4 251
- Réactions
- 1 220
- Points
- 14 353
Hello,
Je recherchais un système pour mettre des functions en cache, j'ai donc fait une ptit function, si vous voulez la modifié & la partager pourquoi pas
Vous devez a chaque fois faire un return Cache([__function__, func_get_args()], {LE RESULTAT DE LA FONCTION});
Je recherchais un système pour mettre des functions en cache, j'ai donc fait une ptit function, si vous voulez la modifié & la partager pourquoi pas
Vous devez a chaque fois faire un return Cache([__function__, func_get_args()], {LE RESULTAT DE LA FONCTION});
PHP:
echo FonctionAMettreEnCache(1, 5);
function FonctionAMettreEnCache($a, $b){
$calcul = $a + $b;
return Cache([__function__, func_get_args()], $calcul);
}
/*
$f = Un array
$f[0] = le nom de la function a mettre en cache
$f[1] = les arguments passer par la function $f[0]
$result = le resultat de la function $f[0] ce qu'il faut mettre en cache
$d = Nombre de seconde a mettre en cache par defaut 600 secondes
*/
function Cache($f, $result, $d = 600){
$name = $f[0];
if(is_array($f[1])){
foreach ($f[1] as $key => $value) {
$name .= "-".$value;
}
}elseif(!empty($f[1])){
$name .= "-".$f[1];
}
$name = $_SERVER['DOCUMENT_ROOT']."/cache/".sha1($name).".json";
if (file_exists($name)) {
if(filemtime($name)+$d <= time()){
$fichier = fopen($name, "w+");
fwrite($fichier, json_encode($result));
fclose($fichier);
return json_decode(file($name)[0]);
}else{
return json_decode(file($name)[0]);
}
}
$fichier = fopen($name, "w+");
fwrite($fichier, json_encode($result));
fclose($fichier);
return json_decode(file($name)[0]);
}