Administrateur PHPfrance |
3088 Messages
26 sept. 2006, 22:27
Je n'ai pas la réponse à tes questions car je n'ai fait que survoler ton post mais un passage a attiré mon attention:
if(file_exists($this->cache_file))
{
if(filemtime($this->cache_file) + $this->limite < time())
{
$this->cache_file_status = false;
}
elseif(filemtime($this->cache_file) + $this->limite > time())
{
$this->cache_file_status = true;
}
}
elseif(!file_exists($this->cache_file))
{
$this->cache_file_status = false;
}
J'ai retiré les commentaires pour des questions de lisibilité (au passage, je recommande vraiment de mettre les commentaires sur leur propre ligne et
avant le code en question).
Pour commencer, tu n'as pas besoin d'utiliser
elseif, des
else fonctionneraient parfaitement. Si la condition de
if est fausse, inutile de vérifier qu'elle est bien fausse dans un
elseif. Si on est dans le
else alors on sait que l'expression de
if est fausse.
...ce qui m'amène à l'autre erreur de ce code:
if(filemtime($this->cache_file) + $this->limite < time())
{
$this->cache_file_status = false;
}
elseif(filemtime($this->cache_file) + $this->limite > time())
{
$this->cache_file_status = true;
}
D'abord tu testes si le cache est plus vieux que la "date limite de validité", puis tu vérifies s'il est plus récent que cette même date... que se passe-t'il s'il est
égal à cette date ? Je pense que ce que tu voulais faire est:
if(filemtime($this->cache_file) + $this->limite < time())
{
// Timestamp plus ancien que la date fatidique
$this->cache_file_status = false;
}
else
{
// Timestamp égal ou supérieur
$this->cache_file_status = true;
}
D'ailleurs, on pourrait le résumer à cette ligne: (le
(bool) est optionnel)
$this->cache_file_status = (bool) (filemtime($this->cache_file) + $this->limite >= time());
(rappel: le contraire de
< c'est
>=, pas
>)
Pour le reste, je n'ai pas vraiment regardé mais ça peut être lié au bug ci-dessus.