ottschoottscho MitgliedKommentare: 2582 Danke erhalten: 252 Mitglied seit: Oktober 2010

Guten Morgen,

ich habe leider im media/image Verzeichnis ganz viele Bilder Leichen, zu welchen es keinen Media Eintrag in der DB gibt.
Wie dies zustande kam, kann ich leider nicht sagen. Leider kann ich den Ordner nicht einfach löschen, da sonst Bilder der Einkaufswelt und Co auch weg sind.
D.h. ich will alle Bilder löschen, welche keinen Datenbankeintrag haben.

Hat von euch zufällig jemand ein Script parat?

Danke

 

Kommentare

  • ottschoottscho MitgliedKommentare: 2582 Danke erhalten: 252 Mitglied seit: Oktober 2010

    Hier die Lösung. Ein Script in das Hauptverzeichnis von Shopware legen und dann ausführen.
    Das Ganze ohne Gewähr. Funktioniert nur, wenn der Bildname gleich der Dateiname ist!

     

    <?php
    error_reporting(E_ERROR | E_WARNING | E_PARSE);
    
    $config = require_once('config.php');
    $pdo = new PDO('mysql:host='.$config[db][host].';dbname=' . $config[db][dbname], $config[db][username], $config[db][password]);
    
    
    function getDir($dir, $pdo) {
    
      $directory = opendir($dir);
        
      while($file = readdir($directory)) {
        if($file != "." && $file != "..") {
          if(is_dir("$dir/$file")) {
            getDir("$dir/$file", $pdo);
          } else {
    		
    		$tempfile = explode("_",$file);
    		$fileNew = $tempfile[0];
    		
    		$statement = $pdo->prepare("SELECT name FROM s_media WHERE name=?");
    		$statement->execute(array($fileNew));  
    		$result = $statement->fetch();
    		
    		if ($result === false ) {
    			//Bild wird gelöscht, kein Eintrag in s_media
    			unlink("$dir/$file");
    			var_dump("$dir/$file");
    			
    		}
    				
    
          }
        }
      }
      closedir($directory);
        
    }
    
    ?>  
    

     

  • schubertwiebachschubertwiebach MitgliedKommentare: 3 Danke erhalten: 0 Mitglied seit: Januar 2017

    Hi zusammen,

    ich muss diesen Thread leider nochmal aufwärmen:

    Leider stehe ich grade vor dem Problem, dass ich tausende nicht verlinkte Bilder im media Ordner habe, die einfach die Platte vollmüllen.

    Diese sind nicht mehr in s_media zu finden und auch im backend weder in artikelbildern noch im papierkorb.

    Hab schon CLI: sw:media:cleanup --delete und sw:thumbnail:cleanup verwendet was keine Lösung brachte.

    SW Version ist: 5.2.12

    Kann da einer Abhilfe schaffen? oder hat einen Tip für mich?

    Das Script oben hab ich mal getestet aber das spuckt einfach nichts aus.

    Beste Grüße

    Philipp

  • shoeshoeshoeshoe MitgliedKommentare: 12 Danke erhalten: 1 bearbeitet 10. August Mitglied seit: April 2017

    Hier mal nach geschaut ?

    https://forum.shopware.com/discussion/35792/geloest-media-db-aufraeumen-auf-filesystem-nicht-mehr-referenzierte-media-dateien-loeschen

    Ich glaube die Lösung von ottscho ist für Shopware mit flysystem suboptimal. Die Lösung von ottscho kann m.E. nur greifen wenn alle Bilder in einem Verzeichnis.

Anmelden oder Registrieren, um zu kommentieren.