Das Script sollte in einem beliebigen Unterordner liegen. Im Standardaufruf wird nur geprüft ob es Bildleichen gibt – gelöscht wird nicht. Will man die unbenutzten Bilder auch löschen kann dies durch Anhängen ?remove=YES passieren.

die Datei legst Du in den Root-Ordner deiner Magento Installation ab. Zum Ausführen musst Du die Datei über den Browser aufrufen: www.deinedomain.de/DeinScript.php – dann wird das Script gestartet, sollten nun die Bilder gelöscht werden, einfach ?remove=YES hinzufügen, also www.deinedomain.de/DeinScript.php?remove=YES.

setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

class cleanDir {

protected $initDir;

protected $freeSize = 0;

function __construct($dir) {
$this->initDir = $dir;
$this->clean ( $dir );

var_dump( $this->freeSize );
}

function clean( $dir ) {

foreach(glob(„$dir/*“) AS $cur ) {

if ( basename($cur) == ‚.‘ || basename($cur) == ‚..‘ ) {
continue;
}

if ( is_dir($cur) ) {
$this->clean( $cur );
}

if ( is_file($cur) ) {

if( $this->isUsed( $cur ) ) {
echo „

$cur wird behalten“;
} else {

$this->freeSize += filesize( $cur );

if ( $_GET[‚remove‘] == ‚YES‘ ) {
echo „

$cur WURDE gelöscht“;
unlink( $cur );
} else {
echo „

$cur ist unnötig“;
}

}

}

}

}

function isUsed( $image ) {

$image = str_replace( $this->initDir, “, $image );
if ( $image[0] != ‚/‘ ) {
$image = ‚/‘.$image;
}

$db = Mage::getSingleton(‚core/resource‘)->getConnection(‚core_read‘);

$stmt = $db->query( „SELECT COUNT(*) AS anz
FROM `catalog_product_entity_media_gallery`
WHERE `value` LIKE ?“, array( $image ) );

if ( $res = $stmt->fetch() ) {
if ( $res[‚anz‘] > 0 ) {
return true;
}
}

return false;
}

}

$cd = new cleandir( Mage::getBaseDir(‚media‘).DS.’catalog‘.DS.’product‘.DS );

Link: https://www.webguys.de/magento-1/unbenutzte-produktbilder-loschen