webalternatif/flysystem-failover-bundle

用于创建故障转移Flysystem适配器的捆绑包。

v0.4.3 2024-01-18 17:51 UTC

This package is auto-updated.

Last update: 2024-09-18 19:23:41 UTC


README

Source code Software license GitHub issues Test status Psalm coverage Psalm level Infection MSI

此捆绑包允许创建故障转移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)变为可用,允许您以csvjsonxml格式显示输出。

使用--help获取更多信息。

同步现有存储

如果您开始在现有项目中使用此包,您可能需要手动将现有非空存储与新的空存储同步。

可以使用以下命令实现:

$ bin/console webf:flysystem-failover:sync

使用--help获取更多信息。

测试

要运行所有测试,执行以下命令:

$ composer test

这将运行 PsalmPHPUnitInfection 以及一个 PHP-CS-Fixer 检查,但您也可以单独运行它们,如下所示:

$ composer psalm
$ composer phpunit
$ composer infection
$ composer cs-check