PHPackages                             3slab/vdm-library-flysystem-transport-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. 3slab/vdm-library-flysystem-transport-bundle

ActiveSymfony-bundle[File &amp; Storage](/categories/file-storage)

3slab/vdm-library-flysystem-transport-bundle
============================================

Vdm Flysystem Transport

3.0.1(5y ago)0394proprietaryPHP

Since Jul 1Pushed 3y ago2 watchersCompare

[ Source](https://github.com/3slab/VdmLibraryFlysystemTransportBundle)[ Packagist](https://packagist.org/packages/3slab/vdm-library-flysystem-transport-bundle)[ RSS](/packages/3slab-vdm-library-flysystem-transport-bundle/feed)WikiDiscussions 3.x-dev Synced today

READMEChangelog (2)Dependencies (5)Versions (3)Used By (0)

VdmLibraryFlysystemTransportBundle
==================================

[](#vdmlibraryflysystemtransportbundle)

[![Build Status](https://camo.githubusercontent.com/b781c5e4c556c130e66d7ac6f126be41b33f17702ac5103ced8c831a3c7d229d/68747470733a2f2f7472617669732d63692e636f6d2f33736c61622f56646d4c696272617279466c7973797374656d5472616e73706f727442756e646c652e7376673f6272616e63683d332e782d646576)](https://travis-ci.com/3slab/VdmLibraryFlysystemTransportBundle)

This symfony messenger extension provides a transport to pull data from [flysystem compatible source](https://github.com/thephpleague/flysystem-bundle).

*Note : it uses flysystem 2.x*

Installation
------------

[](#installation)

```
composer require 3slab/vdm-library-flysystem-transport-bundle
```

Configuration reference
-----------------------

[](#configuration-reference)

```
framework:
    messenger:
        transports:
            consumer:
                dsn: "vdm+flysystem://default.storage"
                retry_strategy:
                    max_retries: 0
                options:
                    flysystem_executor: ~

```

ConfigurationDescriptiondsnthe name of the flysystem service you want to collect from prefixed by `vdm+flysystem://`retry\_strategy.max\_retriesneeds to be 0 because flysystem transport does not support this featureoptions.flysystem\_executorset the id (in the container of services) of a custom flysystem executor to use instead of the [DefaultFlysystemExecutor](./Executor/DefaultFlysystemExecutor.php)Flysystem Executor
------------------

[](#flysystem-executor)

Flysystem executor allows you to customize the behavior of the flysystem transport per transport definition inside your `messenger.yaml` file. Some example use cases are that you may want to list content recursively or not. Or you want to delete processed files from source on `ack`.

If you don't set a custom `flysystem_executor` option when declaring the transport, the default [DefaultFlysystemExecutor](./Executor/DefaultFlysystemExecutor.php) is used which makes a shallow list of all files in the flysystem storage and download each file one by one before yielding the file metadata to the transport handler in a [FlysystemMessage](./Message/FlysystemMessage.php) instance.

You can override this behavior in your project by providing a class that extends `Vdm\Bundle\LibraryFlysystemTransportBundle\Executor\AbstractFlysystemExecutor` or `Vdm\Bundle\LibraryFlysystemTransportBundle\Executor\DefaultFlysystemExecutor`if you just want to tweak default behavior.

The next example is based on the default executor but perform a deep list in the storage instead of the default shallow one.

```
namespace App\Executor;

namespace Vdm\Bundle\LibraryFlysystemTransportBundle\Executor;

use League\Flysystem\FilesystemReader;
use Symfony\Component\Messenger\Envelope;
use Vdm\Bundle\LibraryFlysystemTransportBundle\Message\FlysystemMessage;

class CustomFlysystemExecutor extends DefaultFlysystemExecutor
{
    /**
     * {@inheritDoc}
     * @throws \League\Flysystem\FilesystemException
     */
    public function get(): iterable
    {
        $files = $this->listContents('/', FilesystemReader::LIST_DEEP);

        usort($files, function ($a, $b) {
            return ($a->path() < $b->path()) ? -1 : 1;
        });

        foreach ($files as $key => $file) {
            $file = $this->download($file);

            $isLast = array_key_last($files) === $key;

            $message = new FlysystemMessage($file);
            yield $this->getEnvelope($message, $isLast);
        }
    }
}

```

There are 2 important things your custom executor needs to do :

- `yield` a new envelope
- Add a `StopAfterHandleStamp` stamp to the yielded envelope if you want to stop after handling the last message (if not, the messenger worker may loop over and will execute it once again without stopping). This is done automatically by the `getEnvelope` method with its param `$isLast`.

*Note : thanks to the yield system, you can implement a loop in your execute function and return items once at a time*

*Note : you can keep state in your custom executor*

Then references this custom executor in your transport definition in your project `messenger.yaml` :

```
framework:
    messenger:
        transports:
            ftp-storage-source:
                options:
                    flysystem_executor: App\Executor\CustomFlysystemExecutor

```

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

1827d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/46128985?v=4)[3S.Lab](/maintainers/3slab)[@3slab](https://github.com/3slab)

---

Top Contributors

[![jbouzekri](https://avatars.githubusercontent.com/u/880996?v=4)](https://github.com/jbouzekri "jbouzekri (7 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/3slab-vdm-library-flysystem-transport-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/3slab-vdm-library-flysystem-transport-bundle/health.svg)](https://phpackages.com/packages/3slab-vdm-library-flysystem-transport-bundle)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k5.9M738](/packages/sylius-sylius)[pimcore/pimcore

Content &amp; Product Management Framework (CMS/PIM/E-Commerce)

3.8k3.8M508](/packages/pimcore-pimcore)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M203](/packages/sulu-sulu)[contao/core-bundle

Contao Open Source CMS

1231.6M2.8k](/packages/contao-core-bundle)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9421.6k61](/packages/open-dxp-opendxp)[neoxia/laravel-sftp

SFTP filesystem service provider for Laravel

36260.2k](/packages/neoxia-laravel-sftp)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
