/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)) { |
/trunk/framework/Cache.php |
---|
40,35 → 40,44 |
/** |
* Les options disponibles pour le cache : |
* ====> (string) stockage_mode : |
* Indique le mode de stockage du cache à utiliser parmis : |
* - Cache::STOCKAGE_MODE_FICHIER : sous forme d'une arborescence de fichiers et dossier |
* - Cache::STOCKAGE_MODE_SQLITE : sous forme d'une base de données SQLite |
* |
* ====> (string) stockage_chemin : |
* Chemin vers : |
* - Cache::STOCKAGE_MODE_FICHIER : le dossier devant contenir l'arborescence. |
* - Cache::STOCKAGE_MODE_SQLITE : le fichier contenant la base SQLite. |
* |
* ====> (boolean) controle_ecriture : |
* - Active / Désactive le controle d'écriture (le cache est lue jute après l'écriture du fichier pour détecter sa corruption) |
* - Activer le controle d'écriture ralentira légèrement l'écriture du fichier de cache mais pas sa lecture |
* Le controle d'écriture peut détecter la corruption de fichier mais ce n'est pas un système de controle parfait. |
* |
* ====> (boolean) controle_ecriture : [write_control] |
* - Enable / disable write control (the cache is read just after writing to detect corrupt entries) |
* - Enable write control will lightly slow the cache writing but not the cache reading |
* Write control can detect some corrupt cache files but maybe it's not a perfect control |
* ====> (boolean) mise_en_cache : |
* - Active / Désactive la mise en cache |
* (peut être très utile pour le débogage des scripts utilisant le cache |
* |
* ====> (boolean) mise_en_cache : [caching] |
* - Enable / disable caching |
* (can be very useful for the debug of cached scripts) |
* =====> (string) cache_id_prefixe : |
* - préfixe pour les identifiant de cache ( = espace de nom) |
* |
* =====> (string) cache_id_prefixe : [cache_id_prefix] |
* - prefix for cache ids (namespace) |
* ====> (boolean) serialisation_auto : |
* - Active / Désactive la sérialisation automatique |
* - Peut être utilisé pour sauver directement des données qui ne sont pas des chaines (mais c'est plus lent) |
* |
* ====> (boolean) serialisation_auto : [automatic_serialization] |
* - Enable / disable automatic serialization |
* - It can be used to save directly datas which aren't strings (but it's slower) |
* ====> (int) nettoyage_auto : |
* - Désactive / Régler le processus de nettoyage automatique |
* - Le processus de nettoyage automatiques détruit les fichier trop vieux (pour la durée de vie donnée) |
* quand un nouveau fichier de cache est écrit : |
* 0 => pas de nettoyage automatique |
* 1 => nettoyage automatique systématique |
* x (integer) > 1 => nettoyage automatique toutes les 1 fois (au hasard) sur x écriture de fichier de cache |
* |
* ====> (int) nettoyage_auto : [automatic_cleaning_factor] |
* - Disable / Tune the automatic cleaning process |
* - The automatic cleaning process destroy too old (for the given life time) |
* cache files when a new cache file is written : |
* 0 => no automatic cache cleaning |
* 1 => systematic cache cleaning |
* x (integer) > 1 => automatic cleaning randomly 1 times on x cache write |
* ====> (int) duree_de_vie : |
* - Durée de vie du cache (en secondes) |
* - Si null, le cache est valide indéfiniment. |
* |
* ====> (int) duree_de_vie : [lifetime] |
* - Cache lifetime (in seconds) |
* - If null, the cache is valid forever. |
* |
* @var array $options les options disponibles pour le cache . |
*/ |
protected $options = array( |
84,7 → 93,8 |
protected $stockage = null; |
public function __construct($options, $options_stockage = array()) { |
public function __construct($options = array(), $options_stockage = array()) { |
$this->initialiserOptionsParConfig(); |
$this->setOptions($options); |
if ($this->options['stockage_mode'] == self::STOCKAGE_MODE_FICHIER) { |
$this->stockage = new CacheFichier($options_stockage, $this); |
94,6 → 104,14 |
$this->stockage->setEmplacement($this->options['stockage_chemin']); |
} |
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)) { |
/trunk/framework/config.defaut.ini |
---|
136,8 → 136,8 |
; I18n |
; i18n_url_parametre : nom du paramètre GET contenant la langue demandée |
; i18n_langue_defaut : Indique la langue par défaut |
; i18n_locale : Indique la locale à utiliser pour le systeme |
; i18n_systeme_locale : Paramètres indiquant à PHP que l'on est en français UTF-8. |
; i18n_locale : Indique la locale à utiliser pour le système (alphabet, date, nombre...) |
; i18n_systeme_locale : Paramètres indiquant à PHP qu'elle est la locale à utiliser (par défaut français UTF-8). |
; i18n_timezone : Indique la zone horaire |
; i18n_systeme_timezone : Définit la zone horaire pour le framework et son application |
149,6 → 149,103 |
i18n_systeme_timezone = "php:date_default_timezone_set('{ref:i18n_timezone}');" |
; +------------------------------------------------------------------------------------------------------+ |
; Cache |
; ====> (string) stockage_mode : |
; Indique le mode de stockage du cache à utiliser parmis : |
; - Cache::STOCKAGE_MODE_FICHIER : sous forme d'une arborescence de fichiers et dossier |
; - Cache::STOCKAGE_MODE_SQLITE : sous forme d'une base de données SQLite |
; ====> (string) stockage_chemin : |
; Chemin vers : |
; - Cache::STOCKAGE_MODE_FICHIER : le dossier devant contenir l'arborescence. |
; - Cache::STOCKAGE_MODE_SQLITE : le fichier contenant la base SQLite. |
; ====> (boolean) controle_ecriture : |
; - Active / Désactive le controle d'écriture (le cache est lue jute après l'écriture du fichier pour détecter sa corruption) |
; - Activer le controle d'écriture ralentira légèrement l'écriture du fichier de cache mais pas sa lecture |
; Le controle d'écriture peut détecter la corruption de fichier mais ce n'est pas un système de controle parfait. |
; ====> (boolean) mise_en_cache : |
; - Active / Désactive la mise en cache |
; (peut être très utile pour le débogage des scripts utilisant le cache |
; ====> (string) cache_id_prefixe : |
; - préfixe pour les identifiant de cache ( = espace de nom) |
; ====> (boolean) serialisation_auto : |
; - Active / Désactive la sérialisation automatique |
; - Peut être utilisé pour sauver directement des données qui ne sont pas des chaines (mais c'est plus lent) |
; ====> (int) nettoyage_auto : |
; - Désactive / Régler le processus de nettoyage automatique |
; - Le processus de nettoyage automatiques détruit les fichier trop vieux (pour la durée de vie donnée) |
; quand un nouveau fichier de cache est écrit : |
; 0 => pas de nettoyage automatique |
; 1 => nettoyage automatique systématique |
; x (integer) > 1 => nettoyage automatique toutes les 1 fois (au hasard) sur x écriture de fichier de cache |
; ====> (int) duree_de_vie : |
; - Durée de vie du cache (en secondes) |
; - Si null, le cache est valide indéfiniment. |
stockage_mode = "php:Cache::STOCKAGE_MODE_SQLITE" |
stockage_chemin = "php:Fichier::getDossierTmp().DS.'cache.sqlite'" |
controle_ecriture = "php:TRUE" |
mise_en_cache = "php:TRUE" |
cache_id_prefixe = "php:NULL" |
serialisation_auto = "php:FALSE" |
nettoyage_auto = 10 |
duree_de_vie = 3600 |
; Si cache de type FICHIER, paramètres supplémentaires : |
; =====> (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. |
; =====> (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. |
; =====> (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) |
; =====> (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. |
; =====> (int) dossier_umask : |
; - Umask pour les sous-dossiers de l'arborescence du cache. |
; =====> (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) fichier_umask : |
; - Umask pour les fichiers de 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) |
fichier_verrou = "php:TRUE" |
controle_lecture = "php:TRUE" |
controle_lecture_type = "crc32" |
dossier_niveau = 2 |
dossier_umask = 0707 |
fichier_prefixe = "tbf" |
fichier_umask = 0606 |
metadonnees_max_taille = 100 |
; Si cache de type SQLITE, paramètres supplémentaires : |
; ====> (int) defragmentation_auto : |
; - Désactive / Régler le processus de défragmentation automatique |
; - Le processus de défragmentation automatiques réduit la taille du fichier contenant la base de données |
; quand un ajout ou une suppression de cache est réalisée : |
; 0 => pas de défragmentation automatique |
; 1 => défragmentation automatique systématique |
; x (integer) > 1 => défragmentation automatique toutes les 1 fois (au hasard) sur x ajout ou suppression de cache |
defragmentation_auto = 10 |
; +------------------------------------------------------------------------------------------------------+ |
; Identifications |
; identification : Indiquer ici si l'utilisateur est identifié ou pas. |
; Peut utiliser un objet Auth comme ceci : "php:$mon_objet_auth->getAuth()" |
/trunk/framework/CacheSqlite.php |
---|
1,20 → 1,21 |
<?php |
class CacheSqlite { |
/** |
* Available options |
* Options disponibles : |
* |
* =====> (string) cache_db_complete_path : |
* - the complete path (filename included) of the SQLITE database |
* ====> (string) stockage_chemin : |
* Chemin vers le fichier contenant la base SQLite. |
* |
* |
* ====> (int) automatic_vacuum_factor : |
* - Disable / Tune the automatic vacuum process |
* - The automatic vacuum process defragment the database file (and make it smaller) |
* when a clean() or delete() is called |
* 0 => no automatic vacuum |
* 1 => systematic vacuum (when delete() or clean() methods are called) |
* x (integer) > 1 => automatic vacuum randomly 1 times on x clean() or delete() |
* ====> (int) defragmentation_auto : |
* - Désactive / Régler le processus de défragmentation automatique |
* - Le processus de défragmentation automatiques réduit la taille du fichier contenant la base de données |
* quand un ajout ou une suppression de cache est réalisée : |
* 0 => pas de défragmentation automatique |
* 1 => défragmentation automatique systématique |
* x (integer) > 1 => défragmentation automatique toutes les 1 fois (au hasard) sur x ajout ou suppression de cache |
* |
* @var array Available options |
* @var array options disponibles |
*/ |
protected $options = array( |
'stockage_chemin' => null, |
47,6 → 48,7 |
public function __construct(array $options = array(), Cache $cache) { |
$this->Cache = $cache; |
if (extension_loaded('sqlite')) { |
$this->initialiserOptionsParConfig(); |
$this->setOptions($options); |
} else { |
$e = "Impossible d'utiliser le cache SQLITE car l'extenssion 'sqlite' n'est pas chargée dans l'environnement PHP courrant."; |
54,6 → 56,14 |
} |
} |
private function initialiserOptionsParConfig() { |
while (list($nom, $valeur) = each($this->options)) { |
if (Config::existe($nom)) { |
$this->options[$nom] = Config::get($nom); |
} |
} |
} |
/** |
* Destructor |
* |