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;
  }

Design web agency 1max2web   NTIC web agency 1max2web