ajgl / flysystem-replicate
Flysystem Adapter for Replication
Installs: 28 877
Dependents: 2
Suggesters: 1
Security: 0
Stars: 4
Watchers: 1
Forks: 11
Open Issues: 0
Requires
- php: ^7.4 || ^8.0
- league/flysystem: ^2.0 || ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.12
- league/flysystem-adapter-test-utilities: ^2.4 || ^3.7
- league/flysystem-memory: ^2.0 || ^3.0
- phpstan/phpstan: ^1.8
- phpunit/phpunit: ^9.5.5
Replaces
README
This package is forked from the original league/flysystem-replicate-adapter
written by @frankdejonge. The objective is to provide support for Flysystem V2 and V3
If you use Flysystem 1.x, use ajgl/flysystem-replicate 1.x
Installation
composer require ajgl/flysystem-replicate
Usage
$source = new League\Flysystem\AwsS3V3\AwsS3V3Adapter(...); $replica = new League\Flysystem\Local\LocalFilesystemAdapter(...); $adapter = new Ajgl\Flysystem\Replicate\ReplicateFilesystemAdapter($source, $replica);
What's cool about this is that you can chain them to replicate to more then 1 other storage system.
$adapter = new Ajgl\Flysystem\Replicate\ReplicateFilesystemAdapter($source, $replica); $anotherReplica = new League\Flysystem\WebDAV\WebDAVAdapter(...); $adapter = new Ajgl\Flysystem\Replicate\ReplicateFilesystemAdapter($adapter, $anotherReplica);
Symfony usage with league/flysystem-bundle
If you have league/flysystem-bundle
installed in your Symfony application,
you have to define the replicate adapter service referencing your source and replica storages.
# config/services.yaml services: app.replicate.storage: class: Ajgl\Flysystem\Replicate\ReplicateFilesystemAdapter arguments: ['@flysystem.adapter.source.storage', '@flysystem.adapter.replica.storage']
Then, you have to define a custom adapter in the league/flysystem-bundle
configuration.
# config/packages/flysystem.yaml flysystem: storages: source.storage: adapter: 'local' options: directory: '%kernel.project_dir%/var/storage' replica.storage: adapter: 'aws' options: client: 'aws.client' bucket: 'storage' replicate.storage: adapter: 'app.replicate.storage'