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 56 57 58 59 60
| class gestionnaireSels {
// toujours trié dans l'ordre croissant des dates
// lesSels[x] avec x N+
// lesSels[x] = array (key (time) => val (sel))
var $lesSels;
function gestionnaireSels() {
$this->lesSels = array();
}
// ajotue un sel, en faisant de l'espace si nécessaire
// renvoie la paire indice (x) val (sel)
function addSel() {
$this->dropSelsPerimes();
if (count($this->lesSels) == MAX_SELS) {
array_shift($this->lesSels);
}
$pos = count($this->lesSels);
$key = time();
$val = $this->genereSel();
echo($pos." : ".$key." ".$val."<br>");
$this->lesSels[$pos] = array($key => $val);
return array($pos => $val);
}
// génère un grain de sel
function genereSel() {
$num = mt_rand();
return md5($num);
}
function getSel($key) {
if (array_key_exists($key,$this->lesSels)) return $this->lesSels[$key];
return NULL;
}
function getSelNonPerimes($key) {
$this->dropSelsPerimes();
return getSel($key);
}
// parcours tout les éléments périmés et les supprime
function dropSelsPerimes() {
echo("<br>XX"."-"."XX<br>");
reset($this->lesSels);
while (list($key,$val) = each($this->lesSels)) {
echo("<br>XX"."O"."XX<br>");
$x = current($val);
$time = intval( $x[0] );
echo("<br>XX".$time."XX<br>");
if ($time >= (time() + PEREMPTION_SEL)) {
unset($this->lesSels[$key]);
} else break;
}
}
} |