Système de cache

Par Grophies, il y a 5 ans


Bonjour,

je regarde le Tutoriel PHP : Créer un système de Cache, je suis à 13:48 de la vidéo, aucun fichier n'est généré. Je ne vois pas d'où vient l'erreur. Est-ce que vous avez une idée, s'il vous plaît ?

Ce que je fais

test.php

<?php $time = microtime(TRUE); ?> <?php require_once "class/class.cache.php"; ?> <?php define( "ROOT", dirname(__FILE__) ); ?> <?php $cache = new Cache("${ROOT}/tmp", 1); ?> <hr /> <?php if ( !$variable = $cache->read("variable") ) { sleep(1); $variable = "Ici mon texte"; $cache->write("variable", $variable); } ?> <p><?= $variable; ?></p> <hr /> <p> La page a mis à peu près <span class="label secondary"><?= round(microtime(TRUE) - $time, 3); ?></span> secondes à se générer </p>

class.cache.php

<?php class Cache { public $dirname; public $durationMinutes; public function __construct($dirname, $durationMinutes) { $this->dirname = $dirname; $this->durationMinutes = $durationMinutes; } public function write($filename, $content) { return file_put_contents("{$this->dirname}/{$filename}", $content); } public function read($filename) { $file = "{$this->dirname}/{$filename}"; $lifetime = ( time() - filemtime($file) ) / 60; if ($lifetime = $this->durationMinutes) { return false; } return file_get_contents($file); } }

Ce que je veux

Je veux réussir à générer/mettre à jour le fichier au raffraîchissement de la page.

Ce que j'obtiens

Aucun fichier n'est généré.

Merci d'avance pour avoir pris le temps de me répondre.

1 réponse

Soundboy39, il y a 5 ans

Bonjour,

Qu'est-ce que tu a déjà fait comme debug ?

En l'occurence, il faudrait vérifier dans l'ordre :

  • est-ce que la fonction "write()" est bien appelée ? ;
  • est-ce que $dirname est bien un répertoire existant et est-ce que le programme a bien les droits pour écrire dedans ? ;
  • est-ce que "file_put_contents()" est bien executé sans erreur ? ;
  • est-ce que le chemin "{$this->dirname}/{$filename}" est bien un nom de fichier valide ? (pouwwark ! ça me donne toujours la gerbe la concataination avec des accolades...) ;

N'ésite pas à abuser du "var_dump()" et du "die()"...