Download the PHP package fin/user-backup-lib without Composer
On this page you can find all versions of the php package fin/user-backup-lib. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download fin/user-backup-lib
More information about fin/user-backup-lib
Files in fin/user-backup-lib
Package user-backup-lib
Short Description Библиотека PHP для резервного копирования пользовательских данных из нескольких баз данных.
License MIT
Informations about the package user-backup-lib
UserBackupLib
Библиотека для резервного копирования пользовательских данных из нескольких баз данных с потоковой записью, чанковым шифрованием и опциональным удалением исходных данных.
Документация:
- README quick start
- Подробный гайд
- GitHub Wiki
- Laravel integration notes
- Release notes
Возможности
- Потоковое чтение данных из БД без загрузки всего набора в память.
- Потоковая запись backup JSON в файл.
- Чанковое шифрование больших backup-файлов.
- Потоковое чтение backup-файлов через
streamBackupData(). - Объектный сценарий создания backup через
UserBackupCreateOptions. - Ручной сценарий создания backup-сервиса.
- Контейнерный сценарий через factory.
- Объектный сценарий очистки через
UserDataScope. - Очистка пользовательских данных после backup.
- Keyset-пагинация (
lazyById) по числовому первичному ключу — не деградирует с глубиной; для составных/нечисловых PK автоматический OFFSET-fallback. - Подзапрос-фильтр через
FilterSubquery— заменаwhereIn([десятки тысяч литералов])на компактныйIN (SELECT ...). - Предзагрузка схемы одним запросом на подключение (таблицы/колонки/PK) — снимает per-table round-trip «налог» при обходе всех таблиц удалённой БД.
- Пустые таблицы не попадают в файл бэкапа (нечего восстанавливать) — меньше размер и быстрее restore.
Важные границы
- Пакет ориентирован в первую очередь на MySQL-подобный сценарий.
- Generic restore внутри пакета сейчас не реализован.
- Raw rows таблиц остаются массивами, потому что схема таблиц динамическая.
- Runtime-параметры backup use case не должны резолвиться напрямую из контейнера без явного scope.
Установка
Packagist:
Быстрый старт
Ручной сценарий
Legacy-совместимый вариант:
Подзапрос-фильтр вместо гигантского whereIn
Когда набор значений фильтра огромен (например, десятки тысяч active_id), передача их
литеральным списком делает SQL многокилобайтным и дорогим в разборе на каждой таблице.
Вместо этого можно передать спецификацию подзапроса — библиотека подставит
active_id IN (SELECT id FROM actives WHERE user_id = ?). Подзапрос применяется только
если целевая таблица (actives) присутствует в подключении; иначе — обычный whereIn.
Важно: подзапрос обязан воспроизводить тот же набор строк, что и литеральный список (те же soft-delete/scope-условия), иначе в backup попадут «лишние» строки.
Контейнерный сценарий
Legacy-совместимый вариант:
Очистка данных
Legacy-совместимый вариант:
Чтение backup
Полная расшифровка в массив
Потоковое чтение
Совместимость форматов:
.jsonчитается потоково.- новый чанковый
.json.encчитается потоково. - legacy
.encподдерживается по совместимости, но не гарантирует ту же memory-efficiency на очень больших файлах.
Конфигурация
Пакетный конфиг: config/user-backup.php
Правила:
- если
user-backup.connectionsпуст, пакет берет все ключи изdatabase.connections; - для шифрования используется стандартный
APP_KEYLaravel; - путь сохранения backup выбирает приложение, не пакет.
- параметр
accountIdsв текущей интеграции проекта исторический и по факту содержит ids субсчетов.
Тесты
Текущее покрытие пакета: 100%.
Структура
src/Contracts/*— контракты сервисов и factory.src/Services/DatabaseService.php— потоковое чтение из БД.src/Services/FileStorageService.php— запись, шифрование и чтение backup-файлов.src/Services/UserBackupService.php— orchestration backup use case.src/Services/UserBackupServiceFactory.php— factory для container-friendly сценария.src/Services/UserDataDeletionService.php— очистка данных.src/ValueObjects/*— внутренние DTO/value objects.docs/user-backup-guide.md— полная документация.