Subversion Repositories Applications.framework

Compare Revisions

Ignore whitespace Rev 281 → Rev 282

/trunk/framework/CacheFichier.php
1,52 → 1,53
<?php
class CacheFichier {
/**
* Available options
* Options disponibles
*
* ====> (string) stockage_chemin :
* Chemin vers le dossier devant contenir l'arborescence du cache.
*
* =====> (boolean) fichier_verrou :
* - Active / Désactive le verrouillage des fichiers
* - Peut éviter la corruption du cache dans de mauvaises circonstances, mais cela ne fonctionne pas sur des serveur
* multithread et sur les systèmes de fichiers NFS par exemple.
*
* =====> (string) cache_dir :
* - Directory where to put the cache files
* =====> (boolean) controle_lecture :
* - Activer / désactiver le contrôle de lecture
* - S'il est activé, une clé de contrôle est ajoutée dans le fichier de cache et cette clé est comparée avec celle calculée
* après la lecture.
*
* =====> (boolean) file_locking :
* - Enable / disable file_locking
* - Can avoid cache corruption under bad circumstances but it doesn't work on multithread
* webservers and on NFS filesystems for example
* =====> (string) controle_lecture_type :
* Type de contrôle de lecture (seulement si le contrôle de lecture est activé).
* Les valeurs disponibles sont:
* - «md5» pour un contrôle md5 (le meilleur mais le plus lent)
* - «crc32» pour un contrôle de hachage crc32 (un peu moins sécurisé, mais plus rapide, un meilleur choix)
* - «adler32» pour un contrôle de hachage adler32 (excellent choix aussi, plus rapide que crc32)
* - «strlen» pour un test de longueur uniquement (le plus rapide)
*
* =====> (boolean) read_control :
* - Enable / disable read control
* - If enabled, a control key is embeded in cache file and this key is compared with the one
* calculated after the reading.
* =====> (int) dossier_niveau :
* - Permet de réglez le nombre de niveau de sous-dossier que contiendra l'arborescence des dossiers du cache.
* 0 signifie "pas de sous-dossier pour le cache",
* 1 signifie "un niveau de sous-dossier",
* 2 signifie "deux niveaux" ...
* Cette option peut accélérer le cache seulement lorsque vous avez plusieurs centaines de fichiers de cache.
* Seuls des tests spécifiques peuvent vous aider à choisir la meilleure valeur possible pour vous.
* 1 ou 2 peut être est un bon début.
*
* =====> (string) read_control_type :
* - Type of read control (only if read control is enabled). Available values are :
* 'md5' for a md5 hash control (best but slowest)
* 'crc32' for a crc32 hash control (lightly less safe but faster, better choice)
* 'adler32' for an adler32 hash control (excellent choice too, faster than crc32)
* 'strlen' for a length only test (fastest)
* =====> (int) dossier_umask :
* - Umask pour les sous-dossiers de l'arborescence du cache.
*
* =====> (int) hashed_directory_level :
* - Hashed directory level
* - Set the hashed directory structure level. 0 means "no hashed directory
* structure", 1 means "one level of directory", 2 means "two levels"...
* This option can speed up the cache only when you have many thousands of
* cache file. Only specific benchs can help you to choose the perfect value
* for you. Maybe, 1 or 2 is a good start.
* =====> (string) fichier_prefixe :
* - préfixe pour les fichiers du cache
* - ATTENTION : faite vraiment attention avec cette option, car une valeur trop générique dans le dossier cache du système
* (comme /tmp) peut provoquer des catastrophes lors du nettoyage du cache.
*
* =====> (int) hashed_directory_umask :
* - Umask for hashed directory structure
* =====> (int) fichier_umask :
* - Umask pour les fichiers de cache
*
* =====> (string) file_name_prefix :
* - prefix for cache files
* - be really carefull with this option because a too generic value in a system cache dir
* (like /tmp) can cause disasters when cleaning the cache
* =====> (int) metadonnees_max_taille :
* - taille maximum pour le tableau de métadonnées du cache (ne changer pas cette valeur sauf si vous savez ce que vous faite)
*
* =====> (int) cache_file_umask :
* - Umask for cache files
*
* =====> (int) metatadatas_array_max_size :
* - max size for the metadatas array (don't change this value unless you
* know what you are doing)
*
* @var array available options
* @var array options disponibles
*/
protected $options = array(
'stockage_chemin' => null,
78,6 → 79,7
*/
public function __construct(array $options = array(), Cache $cache) {
$this->Cache = $cache;
$this->initialiserOptionsParConfig();
$this->setOptions($options);
 
if (isset($this->options['prefixe_fichier'])) {
98,6 → 100,14
}
}
private function initialiserOptionsParConfig() {
while (list($nom, $valeur) = each($this->options)) {
if (Config::existe($nom)) {
$this->options[$nom] = Config::get($nom);
}
}
}
private function setOptions($options) {
while (list($nom, $valeur) = each($options)) {
if (!is_string($nom)) {