webalternatif / flysystem-failover-bundle
用于创建故障转移Flysystem适配器的捆绑包。
Requires
- php: 8.0.* || 8.1.* || 8.2.* || 8.3.*
- guzzlehttp/psr7: ^2.0
- league/flysystem: ^3.0
- nyholm/dsn: ^2.0
- symfony/config: ^4.4 || ^5.2 || ^6.0
- symfony/console: ^4.4 || ^5.2 || ^6.0
- symfony/dependency-injection: ^4.4 || ^5.2 || ^6.0
- symfony/event-dispatcher: ^4.4 || ^5.2 || ^6.0
- symfony/http-kernel: ^4.4 || ^5.2 || ^6.0
- webalternatif/flysystem-composite: ^0.2.0
Requires (Dev)
- doctrine/common: ^3.1
- doctrine/dbal: ^2.13
- doctrine/orm: ^2.9
- friendsofphp/php-cs-fixer: ^3.1
- infection/infection: ^0.25.0
- league/flysystem-memory: ^3.0
- phpunit/phpunit: ^9.5
- psalm/plugin-phpunit: ^0.18.4
- symfony/serializer: ^5.3
- vimeo/psalm: ^5.19
Suggests
- symfony/serializer: To enable --format option in console commands
Conflicts
- doctrine/dbal: <2.13.1
README
此捆绑包允许创建故障转移Flysystem适配器,并提供工具以保持底层存储同步。
💡提示:您可能想通过webalternatif/flysystem-dsn-bundle使用此捆绑包,这可以使配置更加简单。
工作原理
此捆绑包允许您为Flysystem创建故障转移适配器。故障转移适配器是基于多个(已存在的)适配器构建的。
当您使用故障转移适配器时,它将方法调用转发到内部适配器。
- 对于读取,它将使用第一个可工作的。
- 对于写入,它将使用第一个可工作的,并将消息推送到存储库以保持所有适配器的底层存储同步。
存储库中的消息可以随后通过控制台命令调用异步处理(请参阅处理消息部分)。
安装
确保已全局安装Composer,如Composer文档中的安装章节中所述。
使用Symfony Flex的应用程序
打开命令行,进入您的项目目录,并执行
$ composer require webalternatif/flysystem-failover-bundle
不使用Symfony Flex的应用程序
步骤1:下载捆绑包
打开命令行,进入您的项目目录,并执行以下命令以下载此捆绑包的最新稳定版本
$ composer require webalternatif/flysystem-failover-bundle
步骤2:启用捆绑包
然后,通过将其添加到项目config/bundles.php
文件中注册的捆绑包列表中来启用捆绑包
// config/bundles.php return [ // ... Webf\FlysystemFailoverBundle\WebfFlysystemFailoverBundle::class => ['all' => true], ];
使用
配置
故障转移适配器在webf_flysystem_failover.adapters
Symfony配置路径下进行配置,然后作为具有id webf_flysystem_failover.adapter.{name}
的服务可用。
每个故障转移适配器必须至少有2个内部适配器。内部适配器可以是引用服务id的字符串,也可以是具有以下属性的数组
service_id
: (必需) 内部适配器服务的标识符,time_shift
: 同步命令比较内部适配器之间修改日期的时间偏移量。
消息存储库可以在webf_flysystem_failover.message_repository_dsn
Symfony配置路径下自定义。目前,仅支持doctrine://<connection_name>
和service://<service_id>
。
webf_flysystem_failover: adapters: adapter1: # service: webf_flysystem_failover.adapter.adapter1 adapters: - service_id_of_adapter_1 - service_id: service_id_of_adapter_2 time_shift: 7200 # underlying storage of this adapter use a +02:00 timezone adapter2: # service: webf_flysystem_failover.adapter.adapter2 adapters: - service_id_of_adapter_3 - service_id_of_adapter_4 - service_id_of_adapter_5 message_repository_dsn: doctrine://my_connection
运行bin/console config:dump-reference webf_flysystem_failover
获取更多信息。
处理消息
要处理由故障转移适配器创建的消息,以下命令可用
$ bin/console webf:flysystem-failover:process-messages
它将处理并删除存储库中最旧的消息。
列出要处理的消息
要列出不将其从存储库中删除的消息,运行以下命令
$ bin/console webf:flysystem-failover:list-messages
默认情况下,结果按页分页,您可以使用--limit
(-l
)和--page
(-p
)配置分页。
如果已安装symfony/serializer
,则--format
(-f
)变为可用,允许您以csv
、json
或xml
格式显示输出。
使用--help
获取更多信息。
同步现有存储
如果您开始在现有项目中使用此包,您可能需要手动将现有非空存储与新的空存储同步。
可以使用以下命令实现:
$ bin/console webf:flysystem-failover:sync
使用--help
获取更多信息。
测试
要运行所有测试,执行以下命令:
$ composer test
这将运行 Psalm、PHPUnit、Infection 以及一个 PHP-CS-Fixer 检查,但您也可以单独运行它们,如下所示:
$ composer psalm $ composer phpunit $ composer infection $ composer cs-check