Этот проект демонстрирует пример обработки 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. Устраняет дублирование кода.
- Клонировать этот репозиторий:
git clone https://github.com/Vanya9422/my_task.git cd my-task
- Запустить сборку 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-ов.
- Произведены мелкие правки в коде, улучшающие его читаемость.
- Исправлены небольшие ошибки для повышения надежности кода.
-
Убедитесь, что все необходимые зависимости из файла
composer.json
установлены при помощи команды: -
Воспользуйтесь обновленным классом
UrlProcessor
, включающим в себя улучшенную валидацию, обработку ошибок и трейты для модульности. -
При необходимости, настройте параметры подключения к базам данных, RabbitMQ и другие настройки в соответствующих классах.
- Произведенные улучшения направлены на повышение надежности и читаемости кода.
- Рекомендуется проверить совместимость изменений с вашим проектом перед обновлением.
Эти изменения делают код более структурированным, повторно используемым и надежным, что улучшит ваш опыт работы с приложением.