Bonjour j'ai rencontré un problème avec un tutoriel de grafikart
Celui ci : http://www.grafikart.fr/tutoriels/php/class-cache-340
if(!$Cache->start('test')){
}
$Cache->end();
tout d'abord quand j'écris ce bout de code, ça me marque 1 sur ma page... Alors que normalement ça ne doit rien afficher
Et si je fais quelque chose comme ça
if(!$Cache->start('test')){
$var = 'test';
echo $var;
}
$Cache->end();
J'ai toujours ce 1 d'afficher et mon fichier cache est bien créé mais il contient encore ce chiffre 1....
Ce chiffre 1 ne vient pas de la durée du cache qui pourrait être 1 minute, non j'ai essaye de mettre par exemple 12minutes et j'ai toujours ce 1....
Voici ma class
<?php
class Cache{
public $dirname;
public $duration; // Durée de vie du cache en minutes
public $buffer;
public function __construct($dirname, $duration){
$this->dirname = $dirname;
$this->duration = $duration;
}
public function write($filename, $content){
return file_put_contents($this->dirname.'/'.$filename, $content);
}
public function read($filename){
$file = $this->dirname.'/'.$filename;
if(!file_exists($file)){
return false;
}
$lifetime = (time() - filemtime($file)) / 60;
if($lifetime > $this->duration){
return false;
}
return file_get_contents($file);
}
public function delete($filename){
$file = $this->dirname.'/'.$filename;
if(file_exists($file)){
unlink($file);
}
}
public function clear(){
$files = glob($this->dirname.'/*');
foreach($files as $file){
unlink($file);
}
}
public function inc($file, $cachename = null){
if(!$cachename){
$cachename = basename($file);
}
if($content = $this->read($cachename)){
echo $content;
return true;
}
ob_start();
require $file;
$content = ob_get_clean();
$this->write($cachename, $content);
echo $content;
return true;
}
public function start($cachename){
if($content = $this->read($cachename)){
echo $content;
$this->buffer = false;
return true;
}
ob_start();
$this->buffer = $cachename;
}
public function end(){
if(!$this->buffer){
return false;
}
$content = ob_end_clean();
echo $content;
$this->write($this->buffer, $content);
}
}
?>
Et voici la façon dont j'inclue tout ça
require 'class/class.cache.php';
$Cache = new Cache('cache/', 1);
Merci à vous
PS : Et si je fais juste ça
$Cache->start('test');
Ça affiche un 1 sur ma page...
Mais si je fais ça
$Cache->start();
ça n'affiche rien, pareil pour
$Cache->end();
J'ai trouvé la solution ! Si jamais quelqu'un a le même problème :
dans
public function end(){
$content = ob_end_clean();
remplacé par
$content = ob_get_clean();
j'avais fais une erreur de frappe pendant le tuto !