Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Cleaner Bundle Laravel Package

adgoal/cleaner-bundle

Symfony bundle integrating lamoda/cleaner. Configure DB and custom storage cleaners via YAML, including transactional mode, parameters, and multi-query setups. Provides a console command to run all cleaners or a selected one (cleaner:clear).

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Steps

  1. Installation

    composer require adgoal/cleaner-bundle
    

    Register the bundle in config/bundles.php:

    Lamoda\CleanerBundle\LamodaCleanerBundle::class => ['all' => true],
    
  2. Basic Configuration Define a cleaning rule in config/packages/lamoda_cleaner.yaml:

    lamoda_cleaner:
        db:
            queue:
                query: "DELETE FROM queue WHERE created_at < NOW() - (:interval || ' days')::interval"
                parameters:
                    interval: 30
    
  3. First Use Case Run the cleaner via CLI:

    php bin/console cleaner:run queue
    

Implementation Patterns

Usage Patterns

  1. Database Cleaning Define queries for tables requiring cleanup (e.g., logs, queues, temp tables):

    lamoda_cleaner:
        db:
            logs:
                query: "DELETE FROM logs WHERE created_at < NOW() - (:interval || ' days')::interval"
                parameters:
                    interval: 7
    

    Run with:

    php bin/console cleaner:run logs
    
  2. Multi-Table Cleanup Use multi_tables for batch operations:

    lamoda_cleaner:
        db:
            multi_tables:
                query: "DELETE FROM {table} WHERE created_at < NOW() - (:interval || ' days')::interval"
                parameters:
                    interval: 30
                tables: ["queue", "temp_data"]
    

    Run with:

    php bin/console cleaner:run multi_tables
    
  3. Custom Cleaners Extend the bundle by creating custom cleaners (e.g., for files or external APIs):

    // src/Cleaner/CustomCleaner.php
    namespace App\Cleaner;
    
    use Lamoda\Cleaner\CleanerInterface;
    
    class CustomCleaner implements CleanerInterface {
        public function clean(): void {
            // Custom logic (e.g., delete old files)
        }
    }
    

    Register in services.yaml:

    services:
        App\Cleaner\CustomCleaner:
            tags: [lamoda_cleaner.cleaner]
    

    Run with:

    php bin/console cleaner:run custom_cleaner
    
  4. Scheduled Cleanup Use Symfony’s scheduler (e.g., with cron) to automate cleanup:

    # Example crontab entry (run daily at 2 AM)
    0 2 * * * php bin/console cleaner:run queue
    

Gotchas and Tips

Pitfalls

  1. Transaction Handling

    • By default, transactional: true (for DB cleaners). Disable if cleanup logic requires intermediate commits:
      lamoda_cleaner:
          db:
              queue:
                  transactional: false
      
  2. Parameter Validation

    • Ensure parameters in YAML are correctly typed (e.g., interval as integer or string).
    • Invalid types may cause SQL syntax errors or runtime exceptions.
  3. Table Locking

    • Large deletions may lock tables. Test in staging first or run during low-traffic periods.
  4. Debugging Queries

    • Enable Symfony’s debug toolbar or log queries to verify SQL:
      # config/packages/dev/lamoda_cleaner.yaml
      lamoda_cleaner:
          debug: true
      
  5. Custom Cleaner Registration

    • Forgetting to tag services with lamoda_cleaner.cleaner will make them undiscoverable by the CLI.

Tips

  1. Dry Runs Use --dry-run to preview deletions without executing:

    php bin/console cleaner:run queue --dry-run
    
  2. Logging Add logging to track cleanup operations:

    lamoda_cleaner:
        db:
            queue:
                log: true  # Logs deletions to Symfony's logger
    
  3. Environment-Specific Configs Override configs per environment (e.g., config/packages/dev/lamoda_cleaner.yaml):

    lamoda_cleaner:
        db:
            queue:
                interval: 1  # Shorter interval in dev
    
  4. Backup Before Cleaning Always back up critical tables before running deletions, especially in production.

  5. Performance Tuning

    • For large tables, add LIMIT to queries to avoid long-running transactions:
      lamoda_cleaner:
          db:
              queue:
                  query: "DELETE FROM queue WHERE created_at < NOW() - (:interval || ' days')::interval LIMIT 1000"
      
    • Use batch processing for very large datasets.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator