Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Pastas temporárias muito grandes Olá, boa tarde! Esta é minha primeira contribuição aqui, e espero que seja útil. Em alguns sistemas que desenvolvi usando Adianti, é feito constantemente upload/download de arquivos, o que acaba por fazer as pastas temporárias ficarem imensas. Apesar de haver formas de agendar a limpeza destas via cron, por exemplo, nem sempre a hospedagem fornece acesso para tanto ao usuário. Então,...
ML
Pastas temporárias muito grandes  
Olá, boa tarde!

Esta é minha primeira contribuição aqui, e espero que seja útil.
Em alguns sistemas que desenvolvi usando Adianti, é feito constantemente upload/download de arquivos, o que acaba por fazer as pastas temporárias ficarem imensas.
Apesar de haver formas de agendar a limpeza destas via cron, por exemplo, nem sempre a hospedagem fornece acesso para tanto ao usuário. Então, resolvi desta forma:
1 - Criei no arquivo de configuração uma entrada chamada definitions onde armazeno alguns parâmetros, e dentro dela coloquei um parâmetro tmpdir onde serão informados os diretórios temporários da aplicação a serem limpos, separados por |.
  1. <?php
  2. [definitions]
  3. tmpdir "/tmp/|/app/output/"
  4. ?>

Depois, no arquivo init.php da raiz da aplicação, coloquei o código abaixo, que realizará a leitura das pastas informadas e apagará o conteúdo não usado há mais de 2 dias:
  1. <?php
  2. // limpar arquivos temporários mas de 2 dias
  3. $root getcwd();
  4. $directories explode("|"$ini['definitions']['tmpdir']);
  5. foreach($directories as $pasta)
  6. {
  7.     $tmpDir $root.$pasta;
  8.     if( is_dir($tmpDir))
  9.     {
  10.         //echo $tmpDir.' é Diretorio! ';
  11.         $h=opendir($tmpDir);
  12.         if( $h )
  13.         {
  14.             $t=time(); // agora
  15.             while( $filetmp readdir($h ) )
  16.             {
  17.                 if( $filetmp != '.' && $filetmp!='..')
  18.                 {
  19.                     $filepath=$tmpDir.$filetmp;
  20.                     if( !is_dir($filepath) && file_exists$filepath ) )
  21.                     {
  22.                         $lastModified = @filemtime$filepath );
  23.                         if( $lastModified == NULL )
  24.                             $lastModified = @filemtime(utf8_decode($filepath));
  25.                         if( $lastModified )
  26.                         {
  27.                             if( $t $lastModified 172800)  // 172800 seconds = 2 dias
  28.                             {
  29.                                    @unlink($filepath);
  30.                             }
  31.                         }
  32.                     }
  33.                 }
  34.             }
  35.             closedir($h);
  36.         }
  37.     }
  38. }
  39. ?>


É isso! Se alguém tiver uma dica mais prática, por favor compartilhe conosco.

Valeu, abraços!

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (1)


JG

Marcelo, muito obrigado por sua contribuição, será muito útil para mim! :)
Uma dica, na linha 29 eu coloquei assim:
  1. <?php
  2. if(!in_array($filepath, [".htaccess"])){
  3. @unlink($filepath);
  4. }
  5. ?>


Para evitar a exclusão dos arquivos .htaccess pois os mesmos são necessário para manter a segurança dos diretórios