protected function refresh()
{
ignore_user_abort(true);
set_time_limit(180);
//don't call readmemory() here
if (!empty($this->mem[self::map_key_ttl]) && intval(date('s')) == 0) {
$_time = time();
foreach ($this->mem[self::map_key_ttl] as $ttl_key => $ttl_value) {
if ($ttl_value < $_time) {
unset($this->mem[self::map_keys][$ttl_key]);
}
}
}
$t = serialize($this->mem);
$size = strlen($t);
$current_size = shmop_size($this->shm);
if ($size > $current_size) {
$r = $this->resize($size + ceil($current_size / 5) + 1000);
} else {
$r = shmop_write($this->shm, str_pad($t, shmop_size($this->shm), ' ', STR_PAD_RIGHT), 0);
}
unset($this->mem);
return $r;
}