Subversion Repositories Applications.framework

Compare Revisions

Ignore whitespace Rev 281 → Rev 282

/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
*
/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()"