Пример #1
0
 /**
  * {@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']]);
 }
Пример #2
0
 /**
  * {@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]]]);
 }