PHPackages                             kllakk/yii2-coordinator - 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. kllakk/yii2-coordinator

ActiveLibrary

kllakk/yii2-coordinator
=======================

Coordinator for yii2 sharding

03PHP

Since Nov 10Pushed 5y agoCompare

[ Source](https://github.com/kllakk/yii2-coordinator)[ Packagist](https://packagist.org/packages/kllakk/yii2-coordinator)[ RSS](/packages/kllakk-yii2-coordinator/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

yii2-coordinator
================

[](#yii2-coordinator)

Координатор для yii2 шардинга, поддерживает любые уровни координации в любой последовательности (функцией, virtual bucket).

Установка
---------

[](#установка)

Установка с помощью пакета composer `"kllakk/yii2-coordinator": "*"`

Пример использования
--------------------

[](#пример-использования)

Сконфигурируйте компонент `coordinator` по примеру:

```
    'components' => [
        'coordinator' => [
            'class' => 'kllakk\coordinator\CoordinatorComponent',
            'component' => [
                [
                    'class' => 'kllakk\coordinator\FunctionCoordinator',
                    'function' => function($i) {
                        return $i % 4;
                    }
                ],
                [
                    'class' => 'kllakk\coordinator\RedisCoordinator',
                    'hashName' => 'sharding',
                    'connect' => [
                        'class' => 'yii\redis\Connection',
                        'hostname' => '127.0.0.1',
                        'port' => 6379,
                        'database' => 4,
                    ]
                ],
                [
                    'class' => 'kllakk\coordinator\DbCoordinator',
                    'table' => [
                        'name' => 'sharding',
                        'columnSearch' => 'bucket_id',
                        'columnResult' => 'shard_id'
                    ],
                    'connect' =>[
                        'class' => 'yii\db\Connection',
                        'dsn' => 'mysql:host=localhost;dbname=yii2basic',
                        'username' => 'root',
                        'password' => 'dm1989',
                        'charset' => 'utf8',
                    ]
                ]
            ]
        ],
    ]
```

Где `component` - это массив разных типов координаторов, которые будут вызываться последовательно, принимая на вход результаты работы предыдущего. Затем вызывайте соответсвующий метод получения шардов:

```
...
$coordinator = \Yii::$app->coordinator;
$shardDb = $coordinator->getShard($db, $keyShard);
...
```

Где `$db` - массив имен компонентов баз данных, которые участвуют в шардинге. Пример: `db1, db2, db3`, `$keyShard` - номер или массив значений ключа шардинга. Метод возвращает имена нужных шардов или пустой массив, если шарды не найдены.

### FunctionCoordinator

[](#functioncoordinator)

Координатор, где номер шарда получается с помощью функции, которая задается параметром `function` как `callable`, на вход подается значение ключа:

```
...
'function' => function($i) {
    return $i % 4;
}
...
```

### DbCoordinator

[](#dbcoordinator)

Координатор через базу данных с помощью таблицы, где `connect` - конфиг для подключения к нужной бд. Таблица должна обязательно иметь поле со значением ключа и поле со значением номера компонента базы данных (`1` соответствует компоненту `db1`). Префикс `db` можно сменить на любой другой, который используется в вашем проекте:

```
...
'table' => [
    'name' => 'sharding',
    'columnSearch' => 'bucket_id',
    'columnResult' => 'shard_id'
  ],
...
```

### RedisCoordinator

[](#rediscoordinator)

Координатор через `redis`. Работает через хеши, поэтому предварительно необходимо настроить нужный хеш с именем, которое соответсвует значению заданному в `hashName`. Ключами в хеше должны выступать значения ключа шардинга, а значениями номера компонентов `db`:

```
...
 'hashName' => 'sharding'
...
```

###  Health Score

16

—

LowBetter than 5% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity31

Early-stage or recently created project

 Bus Factor1

Top contributor holds 66.7% 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.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/5989993?v=4)[kllakk](/maintainers/kllakk)[@kllakk](https://github.com/kllakk)

---

Top Contributors

[![kllakk](https://avatars.githubusercontent.com/u/5989993?v=4)](https://github.com/kllakk "kllakk (2 commits)")[![axiles89](https://avatars.githubusercontent.com/u/13169199?v=4)](https://github.com/axiles89 "axiles89 (1 commits)")

### Embed Badge

![Health badge](/badges/kllakk-yii2-coordinator/health.svg)

```
[![Health](https://phpackages.com/badges/kllakk-yii2-coordinator/health.svg)](https://phpackages.com/packages/kllakk-yii2-coordinator)
```

PHPackages © 2026

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