SYSTÈME DE CACHE POUR SITE EN PHP5

cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009 - 22 avril 2008 à 18:10
cs_Petit bateau Messages postés 5 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 24 avril 2008 - 24 avril 2008 à 11:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46426-systeme-de-cache-pour-site-en-php5

cs_Petit bateau Messages postés 5 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 11:12
Salut,

Effectivement, merci je corrige :-)
cs_Rulio Messages postés 2 Date d'inscription jeudi 26 juin 2003 Statut Membre Dernière intervention 23 avril 2008
23 avril 2008 à 21:49
Salut,

y'a une erreur ligne 191, il doit manquer un e à group dans cette partie du code ?

self::$group = $groupe;
cs_Petit bateau Messages postés 5 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 24 avril 2008
23 avril 2008 à 11:04
Ben moi je trouves que sa reviens au même de toute façon, puisque dans tout les cas si les données sont corrompus ou inexistantes, elles sont remplacés.
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
22 avril 2008 à 19:37
tu as :
# public static function obtenirDonnee($groupe, $id)
# {
# if(parent::enCache($groupe, $id)) // Pour moi, ceci n'est pas possible a faire
# {
# return unserialize(parent::lire($groupe, $id));
# }
#
# return NULL;
# }

lorsque tu utilises ta classe, je pense que tu devrais plutot verifier la présence du cache avant d'obtenir les données et non pas lorsque tu récuperes les données, c'est ce que je voulais te dire. et ce que j'ai noté dans le code en fin de commentaire
cs_Petit bateau Messages postés 5 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 24 avril 2008
22 avril 2008 à 19:21
Re,
Je n'ai pas compris quand tu me dis :
"obtenirDonnee ne doit jamais vérifier la présence du cache, tu dois le faire en amont"
La verification du fichier se fait bien en amont grâce à "enCache"

Sinon j'ai mal compris
cs_Petit bateau Messages postés 5 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 24 avril 2008
22 avril 2008 à 19:02
Salut,

Oui effectivement, j'utilisais ma constant CACHE dans mon script, j'ai oublié de la supprimé.
Je posterais la correction tout à l'heure ou demain.

Merci pour tes remarques, j'en tiendrais compte pour la corriger ;-)

Merci
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
22 avril 2008 à 18:10
quelques petits trucs que je trouve dommage :

tu utilises des constantes globales dans ta classes => a proscrire car si on fais pas attention ca peut engendrer des soucis (en plus on ne connait pas leur utilité, type, ...). A la rigueur utilise des constantes de classes.

toutes tes methodes et propriétés sont statics, ouaip pourquoi pas mais je trouve illogique que tu puisses modifié une propriété dans une methode static qui pour moi ne devrait pas en avoir (de propriété). Je la mettrai en classique.

lorsque tu étends ta classe Cache, tu le fais mal.
pourquoi ne pas profiter renomme tu tes méthodes parentes ? tu pourrais simplement les étendre.
méthode obtenirDonnee => methode lire
et tu aurais :
function lire($groupe, $id){
return unserialize(parent::lire($groupe, $id));
}

je ne suis pas totalement d'accord avec ta construction de classe, obtenirDonnee(j'ai repris ton nom de méthode afin de ne créer de mauvaise interpretation) ne doit jamais vérifier la présence du cache, tu dois le faire en amont (cas de figure ou ta donnée mis en cache est vide et que cela est normal). Tu risques d'effectué des traitements pour rien.

Pour moi, le cache fonctionne toujours de la meme maniere.

if ( ! $oCache->isCached($id) || !$oCache->isValid($id) ){
$oCache->start();
// traitement a mettre en cache
$oCache->save($id, $oCache->end());
}
$sContent = $oCache->get($id);

la validité et le fait d'être mis en cache sont 2 informations distinctes

My 2 cents concernant ta classe
Rejoignez-nous