Образец докер композ взял из своей сборки: https://github.com/VitalyLitvinov74/yii2-docker-xdebug
- Предварительно установите Docker desctop.
- Создайте файл .env на основе .env.example (можно просто убрать .example вконце).
- в .env измените значение переменной BACKEND на удобное вам.
- Это наименование домена, на котором вы сможете запустить сайт.
- Зайдите в ваш файл hosts (
C:\Windows\System32\drivers\etc
) и добавьте туда доменные имена, например, у меня так:
127.0.0.1 kma.test
- Проверьте чтобы
PORT
,MYSQL_PORT
,ADMINER_PORT
не были заняты другими приложениями. в противном случае измените на свои. - В консоли перейдите в папку docker и выполните
docker-compose up -d
-
доступ к апи можно осущиствить через постман (все запросы уже настроены). https://www.postman.com/solar-robot-131180/workspace/test/folder/2231425-e02947f8-1659-4623-a5db-100d7864a658
-
чтобы запустить прослушивание очереди, зайдите в контейнер пхп, у меня это
docker exec -it php-kma.test bash
и выполните php yii queue/watch
К сожалению у меня не было времени настроить нормальный воркер (демон) для пхп, для работы с очередями.
-
Задержка в 30 секунд которая была указана в тз была сделана с помощью
sleep(30)
- другого варианта не нашел. -
В основном люблю использовать декоработы и в контроллере очередей я показал как ими можно очень быстро модифицировать сам алгоритм работы без ушерба понимания того как работает код (основной смысл инкапсуляции).
-
Важно понимать если URL не существует то curl выкинет исключение. следовательно такой адрес не будет добавлен в очередь повторно, и не будет добавлен в бд.
-
Можно создать отдельную таблицу для таких адресов, чтобы иметь ввиду что работает а что нет.
-
Для Ускорения поиска по заголовкам я добавил индекс, и переместил сссами заголоки в одтельную таблицу. Конечно, можно было бы еще и переместить "контент" в другую таблицу т.к. значение этой колонки большое, и со временем может случиться зависание.