IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] systeme de cache


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Par défaut [POO] systeme de cache
    salut
    je voudrai faire un systeme de cache simple, apres quelque lecture je suis un
    peu perdu.

    je voudrai faire un systeme de cache de haut-niveau(comparaison avec le navigateur) et au niveau de craetionde vue

    je par sur cette base(best practice)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    class Cache
    {
    	private $_cacheDir;
     
    	public function __construct($_cacheDir = null)
    	{
    		if(!$_cacheDir){
    			$this->_cacheDir = '/cache';
    		}elseif (is_dir($_cacheDir)){
    			$this->_cacheDir = $_cacheDir;
    		}else {
    			throw new Exception('repertoire de cache inexistant');
    		}
    		if(!is_dir($this->_cacheDir)){
    			throw new Exception('le dossier "cache" n\'existe pas');
    		}
    	}
     
    	private function getFileName(&$request)
    	{
    		$request = (string)$request;
    		if(!$request){ return fasle; }
    		return (string)$this->_cacheDir.'/'.md5($request).'.cache';
    	}
     
    	public function put($request,$data)
    	{
    		$fileName = $this->getFileName($request);
    		return file_put_contents($fileName,$data);
    	}
     
    	public function get($resquest)
    	{
    		$fileName = $this->getFileName($resquest);
    		return file_get_contents($fileName);
    	}
     
    	public function clear($request = null)
    	{
    		if($request){
    			unlink($this->getFileName($request));
    		}else {
    			$dir = opendir($this->cacheDir);
    			if(!$dir){ return false;}
    			while(($file = readdir($dir)) !== false){
    				if(eregi('^[0-9A-Z]+\.cache',$file)){
    					unlink($this->cacheDir.'/'.$file);
    				}
    			}
    			closedir($dir);
    		}
    		return true;
    	}
    }
    ?>
    je voudrai integerer le systeme utilisateur mais je sais pas comment m'y prendre
    faire une super classe et 2 classe derivé ou autre : :

    et comment l'integrer a mon archi MVC (a priori dans le controller)

    et quelles sont les bonnes pratique pour un tel systeme

    merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Par défaut
    vous devez bien avoir un avis la dessus??

  3. #3
    Membre émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    Hello,

    pas sûr de saisir le problème, mais je vais tenter quelques explications :

    ce genre de classe sert principalement à mettre en cache des données... bien souvent il s'agit donc du résultat d'une requete SQL complexe, enregistré dans un fichier sur le disque du serveur pour éviter d'avoir à refaire le traitement.

    Donc pour moi : absolument aucun rapport avec le cache du navigateur.

    Pour l'intégration avec le "système utilisateur", ça ne change pas grand chose : le principe de ce genre de cache est d'associé un identifiant à un fichier de cache.
    Donc s'il s'agit par exemple du pannier du client "toto", l'identifiant pourrait être "PANIER_TOTO"... tout simplement.
    Non ?

    Quant à l'intégration dans ton archi, c'est du cas par cas... généralement il ne s'agit que d'un appel de fonction fait avant l'execution de la requete, donc pas vraiment de changement de structure.


    Note : avant de se lancer dans un système de cache fichier, il vaut mieux bien connaitre le fonctionnement au niveau système... sinon ton système de cache risque d'etre plus lent que la base de données elle même.

Discussions similaires

  1. [phpBB] Système de cache phpbb2
    Par McGyver59280 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 17/03/2011, 10h53
  2. [PHP 5.0] Template et systeme de cache
    Par keaton7 dans le forum Langage
    Réponses: 7
    Dernier message: 13/08/2009, 23h13
  3. [webapp][cache]systeme de cache ds scope application
    Par Le Marlou dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 25/01/2008, 16h57
  4. [OsCache] Cache system
    Par grosFab dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 01/02/2006, 11h05
  5. [Librairies] Quel système de cache utiliser pour un forum?
    Par Cyrius dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 16/10/2005, 11h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo