fin/user-backup-lib 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

fin/user-backup-lib

最新稳定版本:v1.0.1

Composer 安装命令:

composer require fin/user-backup-lib

包简介

Библиотека PHP для резервного копирования пользовательских данных из нескольких баз данных.

README 文档

README

Библиотека для резервного копирования пользовательских данных из нескольких баз данных с безопасным сохранением (стриминг + чанковое шифрование) и опциональным удалением исходных данных.

Возможности

  • Стриминг без пиков памяти: чтение из БД чанками через DatabaseService::streamUserData(), запись в файл без сборки всего JSON в памяти.
  • Чанковое шифрование: каждый фрагмент JSON шифруется отдельно, что позволяет работать с большими выгрузками.
  • DI через интерфейсы: все сервисы объявлены через контракты и регистрируются в UserBackupServiceProvider.
  • Очистка данных: UserDataDeletionService удаляет связанные записи после успешного бэкапа.

Установка

composer require fin/user-backup-lib

Если доступ к packagist ограничен, укажите зеркало, например: composer config repo.packagist composer https://repo.packagist.org

Быстрый старт

use App\Services\UserBackupService;

$backup = UserBackupService::create(
    userId: 42,
    accountIds: [101, 102],
    activeIds: [501],
    ignoredTables: ['temp_logs'],
    connections: ['mysql', 'replica'],
);

$backup->fetchAllUserData();          // собираем данные потоками
$path = $backup->saveBackupToFile();  // шифруем и сохраняем, вернётся путь вида resources/backup_actives/{user}/{date}/{time}.json.enc

Очистка данных после бэкапа

use App\Services\DatabaseService;
use App\Services\UserDataDeletionService;

$database = new DatabaseService(['mysql', 'replica']);
$cleaner = new UserDataDeletionService($database);

$cleaner->deleteUserData(
    userId: 42,
    accountIds: [101, 102],
    activeIds: [501],
    ignoredTables: ['temp_logs'],
);

Расшифровка файла

use App\Services\FileStorageService;

$data = FileStorageService::decryptFile('resources/backup_actives/42/2024-01-01/12-00-00.json.enc');

Конфигурация

  • Ключ шифрования: используется стандартный APP_KEY Laravel. Убедитесь, что он задан.
  • Подключения БД: передайте массив имён подключений (config/database.php) в UserBackupService::create или в конструктор DatabaseService.
  • Игнорируемые таблицы: список строк в параметре $ignoredTables.

Тесты

composer update --no-scripts   # установка зависимостей
vendor/bin/phpunit

По умолчанию используется SQLite in-memory через Orchestra Testbench.

Структура

  • src/Contracts/* — контракты сервисов.
  • src/Services/DatabaseService.php — потоковое чтение из БД.
  • src/Services/FileStorageService.php — потоковая запись/шифрование.
  • src/Services/UserBackupService.php — координация бэкапа.
  • src/Services/UserDataDeletionService.php — удаление данных после бэкапа.
  • src/UserBackupServiceProvider.php — регистрации в контейнере.
  • tests/* — интеграционные тесты (Allure-нотации включены).

统计信息

  • 总下载量: 63
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2024-10-14