/** * {@inheritDoc} * @param string $diretorio Diretório onde os arquivos de cache serão armazenados. * @param int $nivel Em quantos subníveis de diretórios os arquivos de cache serão divididos (1 = não há subdivisão). * @param string $modo Modo de acesso do cache ('r' = somente leitura, 'w' = somente escrita, 'rw' = leitura e e * scrita). * @throws \Numenor\Excecao\ExcecaoCacheDiscoDirNaoDefinido se tanto o parâmetro $diretorio quanto a propriedade * estática self::$diretorioPadrao não estiverem definidos. * @throws \Numenor\Excecao\ExcecaoCacheDiscoDirEscrita se o diretório de cache informado não existir ou não tiver * permissão de escrita. */ public function __construct(string $namespace, int $duracao, string $diretorio = '', int $nivel = 1, string $modo = 'rw') { parent::__construct($namespace, $duracao); $this->diretorio = $diretorio !== '' ? $diretorio : static::$diretorioPadrao; if (empty($this->diretorio)) { throw new ExcecaoCacheDiscoDirNaoDefinido(); } if (!is_writable($this->diretorio)) { throw new ExcecaoCacheDiscoDirEscrita(); } $this->nivel = $nivel; switch ($modo) { case 'rw': $readable = true; $writable = true; break; case 'r': $readable = true; $writable = false; break; case 'w': $readable = false; $writable = true; break; default: $readable = false; $writable = false; } $this->adapter = StorageFactory::factory(['adapter' => ['name' => 'filesystem', 'options' => ['namespace' => $this->namespace, 'ttl' => $this->duracao, 'readable' => $readable, 'writable' => $writable, 'namespace_separator' => '$', 'cache_dir' => $this->diretorio, 'clear_stat_cache' => true, 'dir_level' => $nivel, 'dir_permission' => 0700, 'file_locking' => true, 'file_permission' => 0600, 'key_pattern' => '/^[a-z0-9_\\+\\-]*$/Di', 'no_atime' => true, 'no_ctime' => true]], 'plugins' => ['exception_handler' => ['throw_exceptions' => true], 'Serializer']]); }
/** * {@inheritDoc} * @param int $limiteMemoria Limite de memória, em bytes, que o cache pode fazer o script PHP atingir. */ public function __construct(string $namespace, int $duracao, int $limiteMemoria) { parent::__construct($namespace, $duracao); $this->limiteMemoria = $limiteMemoria; $this->adapter = StorageFactory::factory(['adapter' => ['name' => 'memory', 'options' => ['namespace' => $this->namespace, 'ttl' => $this->duracao, 'namespace_separator' => '$', 'memory_limit' => $limiteMemoria]], 'plugins' => ['exception_handler' => ['throw_exceptions' => true]]]); }