taurus-media/module-image-cleaner 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

taurus-media/module-image-cleaner

最新稳定版本:1.0.0

Composer 安装命令:

composer require taurus-media/module-image-cleaner

包简介

Cleanup unused product images

README 文档

README

A performance-optimized Magento 2 module to identify and remove unused product images.

Features

  • Safe for Large Catalogs: Uses a temporary database table to index used images, ensuring constant-time lookups.
  • Memory Efficient: Uses PHP Generators and Iterators to stream files without loading them all into memory.
  • Batch Processing: Supports batching and sleep intervals to minimize system load.
  • Trash-first Policy: Unused images are moved to var/image-cleaner-trash/ instead of being deleted immediately.
  • Automatic Cleanup: A daily cron job automatically purges files from the trash that are older than 7 days.
  • Dry-run by Default: Safety first—no images are moved unless the --delete flag is explicitly provided and confirmed.

Installation

Place the module code in app/code/Taurus/ImageCleaner.

bin/magento module:enable Taurus_ImageCleaner
bin/magento setup:upgrade

Usage

Commands

Basic Dry-Run:

bin/magento catalog:image:cleanup

Actually Move Unused Images to Trash:

bin/magento catalog:image:cleanup --delete

Advanced Usage:

bin/magento catalog:image:cleanup --delete --batch-size=1000 --sleep=1 --output-file=unused_images.log

Options

  • --dry-run: (Default) Scans and reports unused images without moving them.
  • --delete: Enables moving unused images to trash (var/image-cleaner-trash/). Requires manual confirmation.
  • --batch-size=<int>: Number of images to process before sleeping/logging (default: 5000).
  • --sleep=<int>: Seconds to sleep between batches (default: 0).
  • --output-file=<path>: Path (relative to var/) to log the list of unused images.

Trash & Recovery

When running with --delete, images are moved to var/image-cleaner-trash/. If you accidentally move images that should have been kept, you can move them back to pub/media/catalog/product/.

A cron job taurus_image_cleaner_trash_purge runs daily at 01:00 and deletes files from the trash that are older than 7 days.

How it Works

  1. Indexing: The module creates a temporary table taurus_image_cleaner_used_images.
  2. Collection: It populates this table with image paths from:
    • catalog_product_entity_media_gallery (Media gallery entries)
    • catalog_product_entity_varchar (Main image, small image, thumbnail, and swatch image attributes)
  3. Scanning: It uses RecursiveDirectoryIterator to scan pub/media/catalog/product/.
  4. Validation: For each file, it performs a fast indexed lookup against the temporary table.
  5. Action: If an image is not found in the index, it's marked as unused and optionally moved to trash.
  6. Cleanup: The temporary database table is dropped after the process completes.
  7. Maintenance: A cron job cleans up the trash folder periodically.

Safety & Warnings

  • Backup Recommended: Always back up your pub/media/catalog/product directory and your database before running with the --delete flag in a production environment.
  • Excluded Directories: The module automatically ignores watermark, tmp, placeholder, and other temporary directories.
  • Cache Scanning: The module now also scans the pub/media/catalog/product/cache directory. Cached images are considered unused if their corresponding original product image is not found in the database.
  • Normalized Paths: Only images following the Magento standard structure pub/media/catalog/product/[a-z0-9]/[a-z0-9]/... are processed.

Requirements

  • Magento 2.4+
  • PHP 8.1+

统计信息

  • 总下载量: 3
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 6
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-04-03

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固