Skip to content

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

License

Notifications You must be signed in to change notification settings

ssntpl/cloud-storage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cloud Driver for Laravel Storage

Latest Version on Packagist Total Downloads

A powerful Laravel storage driver that enables seamless synchronization of files across multiple disks.

Features

  • Multi-Disk Support: Define multiple remote disks to store your files.
  • Asynchronous Sync: Files are synced to all remote disks asynchronously, ensuring high availability.
  • Optimized Access: Files are accessed from the readable disks priority wise.

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.

    'disks' => [
       'local' => [
          'driver' => 'local',
          'root' => storage_path('app/private'),
          'write_enabled' => true,
          'write_priority' => 2,
          'read_priority' => 1,
          'retention' => 1,
       ],
       'cloud_disk' => [
          'driver' => 'cloud',
          'disks' => [
             'local', // just write here disk name and other configuration variable can be set on this disk configuration array as mention above.
             [
                'driver' => 'local',
                'root' => storage_path('app/public'),
                'url' => env('APP_URL').'/storage',
                'visibility' => 'public',
                'write_enabled' => true, // false means read only opertions should be done. default is true
                'write_priority' => 1, // 0 means least priority. default is 0
                'read_priority' => 2, // 0 means least priority. default is 0
                'retention' => 0, // in days, 0 means no retention. default is 0. if retention is greater than 0, make sure your queue connection sould not be sync.
             ],
          ],
       ],
    
       // Define other disks (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 read disks priority wise.

    $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.
  • 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.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •  

Languages