ssntpl/cloud-storage

Laravel Storage Driver to sync files on to the multiple disks asynchronously

v0.1.8 2025-01-03 11:45 UTC

README

Latest Version on Packagist Total Downloads

A powerful Laravel storage driver that enables seamless synchronization of files across multiple disks, with an integrated cache disk for optimized performance.

Features

  • Multi-Disk Support: Define multiple remote disks to store your files.
  • Cache Disk: Files are first uploaded to a designated cache disk for quick access.
  • Asynchronous Sync: Files are synced to all remote disks asynchronously, ensuring high availability.
  • Optimized Access: Files are accessed from the cache disk first; if not found, they are retrieved from the remote disks in the defined order.

Installation

Install the package via Composer:

composer require ssntpl/cloud-storage

Usage

  1. Configuration: In your Laravel application's config/filesystems.php, define your disks, including the cache disk.

    'disks' => [
        'cloud_disk' => [
            'driver' => 'cloud',
            'cache_disk' => 'local',
            'remote_disks' => [
                 'remote_disk_1', 
                 'remote_disk_2', 
                 's3', 
                 'minio',
                 // Add more remote disks as needed...
            ],
            'cache_time' => 24, // Time (in hours) to cache files on the cache disk
        ],
    
        // Define other disks (including cache disk, and remote disks used in the cloud disk above)
    ],
  2. Upload Files: When uploading files using this driver, they will first be stored on the cache disk and then asynchronously synced to all defined remote disks.

    Storage::disk('cloud_disk')->put('path/to/file.jpg', $fileContents);
  3. Access Files: The driver will check the cache disk first; if the file isn't found there, it will sequentially check each remote disk as configured.

    $file = Storage::disk('cloud_disk')->get('path/to/file.jpg');

Future Enhancements

  • Improved Sync Strategies: Additional options for sync strategies, such as prioritizing certain disks.
  • Advanced Caching Mechanisms: Enhance caching strategies to improve performance in specific use cases.
  • Monitoring and Alerts: Integrate monitoring for sync failures and performance metrics.

Changelog

Please see CHANGELOG for detailed information on the latest changes.

Security Vulnerabilities

If you discover any security-related issues, please email support@ssntpl.com instead of using the issue tracker.

Credits

License

This package is licensed under the MIT License. See the License File for more details.