function cache_disk_lock ($id) { // Détermine le dossier verrou $dir = "$id.lock"; // Essaie de créer le dossier while (!@mkdir ($dir)); // Fin. Le verrou est posé } function cache_disk_unlock ($id) { // Détermine le nom du verrou $dir = "$id.lock"; // Essaie de supprimer le verrou @rmdir ($dir); // Fin. Le verrou est libre } function cache_disk_get_cached_version ($id) { // Determine le nom du fichier $id = $_SERVER['TMP'] . "/CACHEXXX" . md5($id) . ".cache"; // -- ERREUR -- : // je n'ai pas vu l'existence de cette variable globale dans al doc (http://fr3.php.net/manual/fr/reserved.variables.php), // je l'ai remplacer par une constante défini au même moment que les autres => $id = CACHE_DIR."CACHEXXX" . md5($id) . ".cache"; // Verrouille l'accès au fichier cache_disk_lock($id); // Accède au fichier $f = @fopen ($id, "r"); if (!$f) { cache_disk_unlock($id); return false; } // Lit la valeur $result = unserialize (file_get_contents ($ // -- ERREUR -- : la ligne n'est pas terminée => // $result = unserialize (file_get_contents ($id)); // Deverrouille le fichier cache_disk_unlock($id); // Retourne la valeur return $value; // -- ERREUR -- : ce n'est pas la bonne varible qui est retournée => return $result; } function cache_disk_cache ($id, $value) { // Determine le nom du fichier $id = $_SERVER['TMP'] . "/CACHEXXX" . md5($id) . ".cache";// -- ERREUR -- : // je n'ai pas vu l'existence de cette variable globale dans al doc (http://fr3.php.net/manual/fr/reserved.variables.php), // je l'ai remplacer par une constante défini au même moment que les autres => $id = CACHE_DIR."CACHEXXX" . md5($id) . ".cache"; // Verrouille l'accès au fichier cache_disk_lock($id); // Accède au fichier $f = @fopen ($id, "w"); if (!$f) { cache_disk_unlock(); return false; } // Ecrit la valeur $value = serialize ($value);// -- ERREUR -- : serialize linéarise une variable et n'écrit pas dans le fichier // il manque donc un morceau, par exemple => /* if (fwrite($f, $value) === FALSE) {// Ecrit dans le fichier return false; } fclose($f);// Ferme le fichier */ // -- ERREUR -- : Erreur fatale, si l'on ne débloque pas le fichier, le sémaphore le bloc toujours est fini en erreur fatale => // cache_disk_unlock($id);// Deverrouille le fichier // Fin return true; }