Subversion Repositories eFlore/Applications.moissonnage

Rev

Rev 22 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 22 Rev 26
1
<?php
1
<?php
2
class CacheMoissonnage {
2
class CacheMoissonnage {
3
	
3
	
4
	private $service;
4
	private $service;
5
	private $config;
5
	private $config;
6
	private $dureecache = 0;
6
	private $dureecache = 0;
7
	private $projetNom;
-
 
8
	private $serviceNom;
7
	private $serviceNom;
9
	private $cache;
8
	private $cache;
10
	private $cacheActif;
9
	private $cacheActif;
11
	
10
	
12
	public function __construct($service, $projetNom, $serviceNom, $cacheActif) {
11
	public function __construct($service, $serviceNom, $cacheActif) {
13
		$this->cacheActif = $cacheActif;
12
		$this->cacheActif = $cacheActif;
14
		$this->service = $service;
13
		$this->service = $service;
15
		$this->chargerDureeCache();
14
		$this->chargerDureeCache();
16
		$this->projetNom = $projetNom;
-
 
17
		$this->serviceNom = $serviceNom;
15
		$this->serviceNom = $serviceNom;
-
 
16
		$this->cache = new CacheSimple(array(
-
 
17
			"mise_en_cache"   => true,
18
		$this->cache = new CacheSimple(array("mise_en_cache" => true, "stockage_chemin" => Config::get("chemincache"), "duree_de_vie" => $this->dureecache));
18
			"stockage_chemin" => Config::get("chemincache"),
-
 
19
			"duree_de_vie"    => $this->dureecache
-
 
20
		));
19
	}
21
	}
20
 
22
 
21
	public function chargerDureeCache() {
23
	public function chargerDureeCache() {
22
		if ($this->cacheActif == "1") {
24
		if ($this->cacheActif == "1") {
23
			$this->dureecache = $this->service->getDureeCache();
25
			$this->dureecache = $this->service->getDureeCache();
24
		}
26
		}
25
	}
27
	}
26
	
28
	
27
	public function consulter($ressources, $parametres) {
29
	public function consulter($ressources, $parametres) {
28
		$id = $this->genererID($ressources, $parametres);
30
		$id = $this->genererID($ressources, $parametres);
29
		$retour = unserialize($this->cache->charger($id));
31
		$retour = unserialize($this->cache->charger($id));
30
		if ($retour == false) {
32
		if ($retour == false) {
31
			$retour = $this->mettreEnCache($ressources, $parametres);
33
			$retour = $this->mettreEnCache($ressources, $parametres);
32
		}
34
		}
33
		
35
		
34
		return $retour;
36
		return $retour;
35
	}
37
	}
36
	
38
	
37
	public function mettreEnCache($ressources, $parametres) {
39
	public function mettreEnCache($ressources, $parametres) {
38
		$retour = $this->service->consulter($ressources, $parametres);
40
		$retour = $this->service->consulter($ressources, $parametres);
39
		$id = $this->genererID($ressources, $parametres);
41
		$id = $this->genererID($ressources, $parametres);
40
		if ($this->dureecache > 0) {
42
		if ($this->dureecache > 0) {
41
			$this->cache->sauver(serialize($retour), $id);
43
			$this->cache->sauver(serialize($retour), $id);
42
		}
44
		}
43
		return $retour;
45
		return $retour;
44
	}
46
	}
45
	
47
	
46
	
48
	
47
	public function genererID($ressources, $parametres) {
49
	public function genererID($ressources, $parametres) {
48
		$chaineRessources = "";
50
		$chaineRessources = "";
49
		$chaineParametres = "";
51
		$chaineParametres = "";
50
		if (count($ressources) > 0) {
52
		if (count($ressources) > 0) {
51
			foreach ($ressources as $key => $val) {
53
			foreach ($ressources as $key => $val) {
52
				$chaineRessources .= "$key:$val;";
54
				$chaineRessources .= "$key:$val;";
53
			}
55
			}
54
		}
56
		}
55
		
57
		
56
		if (count($parametres) > 0) {
58
		if (count($parametres) > 0) {
57
			foreach ($parametres as $key => $val) {
59
			foreach ($parametres as $key => $val) {
58
				$chaineParametres .= "$key:$val;";
60
				$chaineParametres .= "$key:$val;";
59
			}
61
			}
60
		}
62
		}
61
		
63
		
62
		$chaineMD5 = $this->projetNom.'/'.$this->serviceNom.'/'.md5($chaineRessources.$chaineParametres);
64
		$chaineMD5 = $this->serviceNom.'/'.md5($chaineRessources.$chaineParametres);
63
		return $chaineMD5;
65
		return $chaineMD5;
64
	}
66
	}
65
}
67
}
66
 
68
 
67
 
69
 
68
?>
70
?>