Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] jZone - Suppression en fonction d'une période

Posted by yamsuz on 10/20/2010 16:07

Bonjour,

J'utilise depuis quelques temps le cache des zones (très bonne fonctionnalité). J'ai un cas d'une zone qui doit être remis à jour en fonction d'une période (dans mon cas journalier), c'est la liste des fêtes (prénoms) du jour. J'avais bien sur pensé à mettre une durée, mais ça va généré trop de problème si on se connecte juste avant minuit. J'avais pensé à faire la suppression par moi-même mais le nom du ficher généré n'est pas accessible depuis ma zone (private et nom protected).

Est-ce que c'est une bonne idée de rajouter la fonctionnalité (suppression par période Heure / Jour / Semaine / Mois / Année). Je veux bien à la rigueur l'implémenter.

  [Opened] jZone - Suppression en fonction d'une période

Reply #1 Posted by Vincentv on 10/20/2010 17:50

Pourquoi tu ne passe pas la date de la période en paramètre de la zone? le cache de la zone devrais être généré pour chaque nouvelle date passé en paramètre.

  [Opened] jZone - Suppression en fonction d'une période

Reply #2 Posted by yamsuz on 10/20/2010 21:47

C'est une bonne idée, mais je n'ai pas envie de garder les anciennes zones sur le serveur, comment je peux savoir que je dois supprimer les anciens fichiers (supprimer à chaque fois le fichier, c'est lourd pour pas grand chose), garder le fichier pour l'utiliser une fois par an.

  [Opened] jZone - Suppression en fonction d'une période

Reply #3 Posted by Vincentv on 10/21/2010 13:15

A vu de nez, je dirais en indiquant le timeout du cache de la zone ;)

http://jelix.org/articles/fr/manuel-1.2/zones#automatique ca devrait te faire un cache de 86400sec.

 

En passant la date en paramètre de la zone et en indiquant le timeout, tu devrais limiter la taille de ton cache et ajours une zone a jours :)

  [Opened] jZone - Suppression en fonction d'une période

Reply #4 Posted by laurentj on 10/21/2010 23:00

@litchi : non car les fichiers restent.

Pour ce genre de chose, peut être vaut-il mieux ajouter dans le cron, un script qui ferait le ménage, si c'est possible bien sûr, au niveau du serveur.

  [Opened] jZone - Suppression en fonction d'une période

Reply #5 Posted by Vincentv on 10/22/2010 07:48

laurentj a dit :
@litchi : non car les fichiers restent.

Hum erreur de ma part, je pensais que tout les caches supérieur au timeout étaient supprimés :(

  [Opened] jZone - Suppression en fonction d'une période

Reply #6 Posted by yamsuz on 10/22/2010 13:05

J'y ai pensé de mettre un script sur le serveur, mais je sais que j'aurai des problèmes pour le mettre en place. Je préfére largement le faire de manière dynamique.

J'ai modifié la classe zone pour le prendre en charge, si tu veux je peux t'envoyer Laurent la modification que j'ai apporté afin de l'intégrer si tu trouves que ça peut être intéressant pour Jelix.

  [Opened] [Résolu] - jZone - Suppression en fonction d'une période

Reply #7 Posted by yamsuz on 10/30/2010 11:56

Si ça peut intéresser quelqu'un J'ai modifié la classe jZone. J'ai rajouté une variable de classe.

Le principe est assez simple, on rajoute un control pour vérifier si le format de la date de création du fichier (cache) correspond au même format de la date du jour. Le parametre à rajouter est tout simplement le format que vous désirer tester (cf la fonction date de php)

protected _formatDate="";

et j'ai rajouté ce test dans la fonction getContent() dans le test permettant de vérifier si le fichier existe.

<code>
 if(file_exists($f)){
</code>

j'ai rajouté :

if($this->_formatDate != ""){
<code>
	clearstatcache();
	if(date($this->_formatDate,filemtime($f)) != date($this->_formatDate)){
		// timeout : regenerate the cache
		unlink($f);
		$this->_cancelCache=false;
		$content=$this->_createContent();
		if(!$this->_cancelCache){
			jFile::write($f,$content);
		}
		return $content;
	}

}

</code>

Voici ce que ça donne :

<code>
 if(file_exists($f)){
	if($this->_cacheTimeout > 0){
		[...]
	}
	//BEGIN Ma modif
	if($this->_formatDate != ""){
		clearstatcache();
		if(date($this->_formatDate,filemtime($f)) != date($this->_formatDate)){
			// timeout : regenerate the cache
			unlink($f);
			$this->_cancelCache=false;
			$content=$this->_createContent();
			if(!$this->_cancelCache){
				jFile::write($f,$content);
			}
			return $content;
		}
	}
	//END Ma modif
	if($this->_tplname != ''){
		[...]
	}
	$content = file_get_contents($f);

}

</code>

Je pense qu'il serait intéressant de rajouter ce principe dans la classe d'origine et de l'intégrer.

Actuellement je l'utilise pour la génération de template d'un calendrier (modification à chaque jour, semaine, mois, année, liste des fêtes, travail à faire au jour le jour, mémos ...)

  [Opened] jZone - Suppression en fonction d'une période

Reply #8 Posted by foxmask on 10/30/2010 12:14

Pour cela un ticket ouvrir il faut :)


@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] jZone - Suppression en fonction d'une période

Reply #9 Posted by yamsuz on 10/31/2010 18:21

Cela est fait : http://developer.jelix.org/ticket/1217

 
Page
  1. jZone - Suppression en fonction d'une période