Vanya9422 / rabbitmq_clickhouse

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Обработка URL-ов и сохранение данных в базы данных

Этот проект демонстрирует пример обработки URL-ов, валидацию их формата, отправку в очередь RabbitMQ и сохранение данных в базы данных MariaDB и ClickHouse. Проект разработан без использования фреймворков и библиотек для работы с базами данных.

Требования

  • PHP 7.4 и выше
  • Библиотека php-amqplib для работы с RabbitMQ

Описание файлов

  • RabbitMQManager.php: Класс для управления отправкой и получением URL-ов из RabbitMQ. Использует трейт UrlSendAble для упрощения отправки валидных URL-ов.

  • MariaDBDatabase.php: Класс для работы с базой данных MariaDB. Валидирует URL-ы перед сохранением и выполняет агрегированные запросы.

  • ClickHouseDatabase.php: Класс для работы с базой данных ClickHouse. Также валидирует URL-ы перед сохранением и выполняет агрегированные запросы.

  • UrlProcessor.php: Класс для обработки URL-ов, отправки в RabbitMQ и сохранения данных в базы данных. Использует трейты UrlValidateAble и UrlSendAble для валидации и отправки URL-ов.

  • traits/UrlValidateAble.php: Трейт для валидации URL-ов. Осуществляет проверку формата URL-ов.

  • traits/UrlSendAble.php: Трейт для упрощенной отправки валидных URL-ов в RabbitMQ. Устраняет дублирование кода.

Использование

  1. Клонировать этот репозиторий:
    git clone https://github.com/Vanya9422/my_task.git
    cd my-task
    
  2. Запустить сборку Docker
    docker-compose up -d && docker-compose exec php-fpm composer install
    

Рефакторинг и модульность

  • Произведен рефакторинг класса UrlProcessor для более четкой структуры и лучшей читаемости кода.
  • Добавлен трейт UrlValidateAble, предоставляющий метод validateUrls() для валидации URL-ов перед обработкой.
  • Реализован трейт UrlSendAble, который упрощает отправку валидных URL-ов в RabbitMQ.

Использование интерфейсов

  • Создан интерфейс DatabaseInterface, содержащий общие методы для работы с базами данных.
  • Внедрен интерфейс DatabaseInterface в класс UrlProcessor для вывода агрегированных данных из разных баз данных.

Обработка ошибок и валидация

  • В методе processUrls() добавлена обработка ошибок и вывод сообщений о невалидных URL-ах.
  • Введено новое исключение ValidationException для обработки ошибок валидации URL-ов.

Улучшение читаемости и исправление ошибок

  • Произведены мелкие правки в коде, улучшающие его читаемость.
  • Исправлены небольшие ошибки для повышения надежности кода.

Как использовать?

  1. Убедитесь, что все необходимые зависимости из файла composer.json установлены при помощи команды:

  2. Воспользуйтесь обновленным классом UrlProcessor, включающим в себя улучшенную валидацию, обработку ошибок и трейты для модульности.

  3. При необходимости, настройте параметры подключения к базам данных, RabbitMQ и другие настройки в соответствующих классах.

Важно знать!

  • Произведенные улучшения направлены на повышение надежности и читаемости кода.
  • Рекомендуется проверить совместимость изменений с вашим проектом перед обновлением.

Эти изменения делают код более структурированным, повторно используемым и надежным, что улучшит ваш опыт работы с приложением.

About


Languages

Language:PHP 96.9%Language:Dockerfile 3.1%