Ir para conteúdo
Fórum Script Brasil
  • 0

Excluir arquivos órfãos


Wilson Carlos de Sousa

Pergunta

Tenho um sistema de gerenciamento de conteúdo que utilizo no meu site de loja de carros, tem 3 tabelas que são dependentes, Loja, Carros e Carrosfotos.

Quando cadastro uma Loja, adiciono um Carro e várias fotos desse carro, tudo em suas tabelas correspondentes, porém notei que o sistema não estava excluindo os registros em cascata, estavam ficando muito arquivos órfãos, ou seja, quando excluísse a loja, era pra excluir todos os carros daquela loja e todas as fotos dos carros, sendo assim fiquei com muito espaço perdido no servidor, então preciso excluir essas fotos.

Pesquisei em alguns fóruns e não achei nada completo, somente fragmentos do que queria, então fui juntando as coisas e gostaria da opinião de vocês onde posso melhorar ou se estou fazendo de forma errada, segue o código:

 

try{
//Caminho para pasta
$path = "upload/imagens/carros/";
$diretorio = dir($path);

//Faço uma leitura em toda pasta e adiciono cada arquivo no array
$arquivos = array();
while ($file = $diretorio->read()) {
    if ($file != "." && $file != "..") {
        array_push($arquivos, $file);
    }
}

//Conexão com BD
$conn = new PDO('mysql:host=localhost;dbname=minhaloja', 'user', 'senha');

//Seleciono todos os registros 
$stmt = $conn->prepare('SELECT `imagem` FROM `carrosfotos`');
$stmt->execute(array());
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

//Percorro o array e comparo com o BD se o arquivo encontrado está cadastrado
foreach ($arquivos as $foto){
        if (in_array($foto, array_column($result, 'imagem'))) {
        echo '<pre>';
        echo 'A imagem'.$foto.' está cadastrada.';
        echo '</pre>';
        } else {
            unlink($path . $foto);
        }

}
} catch (PDOException $e) {
    echo 'ERRO: ' . $e->getMessage();
    $diretorio->close();
}

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...