Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rdsdantas_

Deletar imagens duplicadas

Recommended Posts

Pessoal, estou com um grande problema no meu wordpress. Meu tema atual gera inúmeras imagens para cada imagem 'upada' nos posts, isso porque teoricamente ele precisaria destas variações para diversas visualizações de thumb. O problema é que como meu site é de noticias atualmente tenho no servidor em torno de 7.000 imagens e após a troca do tema já está passando de 60.000 imagens; resultado? a empresa de hospedagem está começando a ameaçar suspender minha conta por extrapolar os limites de INODE do servidor. Por isso preciso apagar as imagens não utilizadas que esse tema está gerando. Gostaria de um exemplo de script para eu realizar esta operação. Vou dar um exemplo do meu cenário atual para ver se alguem pode me ajudar a montar um scrip pra isso.


Ex.:
Caminho: /wp-content/upload/2012/01
/wp-content/upload/2012/02 (e vai nesta hierarquia até 12)


Dentro destas pastas (01,02, 03...) tem as imagens geradas na estrutura abaixo:


imagem.jpg (imagem original quando upada)
imagem-40x40.jpg
imagem-60x60.jpg
e segue nestas variações de tamanho até completar em torno de 18 imagens.


Dois pontos a recaptular:

 

1- Ele insere o tamanho do redimensionamento na imagem exatamente como foi mencionado no exemplo acima

2- Isso aconteceu com o upload das pastas 2011, 2012 e 2013. Sendo, 2011 e 2012 com subpastas que vão de 01 a 12.

 

Resumindo, gostaria de um script que delete todas as imagens que contenham as variações declaradas (como no exemplo 40x40, 60x60...).

 

 

Desde já agradeço a atenção e ajuda de todos..

Compartilhar este post


Link para o post
Compartilhar em outros sites
Pessoal, depois de pesquisar um pouco mais consegui fazer um script 'meia-boca' pra resolver rápido meu problema; segue o que consegui fazer:
<?php
$file_type = array('gif','jpg','png');
$res_img = array('*40x*','*50x*','*70x*','*110x*','*120x*','*150x*','*160x*','*180x*','*190x*','*220x*','*260x*','*300x*','*340x260*','*460x*','*465x*','*540x*','*575x*','*551x*','*550x*');

	foreach($res_img as $resolucao){ 
      foreach($file_type as $ext)
        foreach (glob($resolucao.$ext) as $arquivo) 
if (!unlink($arquivo))
{
  echo ("Erro ao deletar $arquivo");
}
else
{
  echo ("Arquivo $arquivo deletado com sucesso!");
}
} 
?>

 

 

Com ele funcionou bem, já deletei os arquivos. Mas tem um questão de aprimoramento que gostaria de resolver. Se repararem, para conseguir excluir o(os) arquivos esse código tem que ficar no diretório dos próprios arquivos a serem excluídos.
Alguem conseguiria implementar a possibilidade de escolher o diretório da exclusão? ou melhor, escolher UM diretório e ele buscar os critérios nos subdiretórios?
Desde já agradeço.. tenho certeza que será útil para muita gente!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em caráter sarcástico, eu sei fazer o que você precisa.

 

E você também pode saber, para isso você precisaria da classe nativa RecursiveDirectoryIterator.

 

Primeiro você monta a lista e depois exclui, em loops separados, já que o segundo procedimento pode ser um pouco mais demorado, podendo requerer cuidados especiais para lidar com o timeout.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.