Files
test-FHR/main-repo
Ilya Rogozhin 459d048596 Speed up export
2026-06-10 10:31:13 +02:00
..
2026-06-10 10:31:13 +02:00
2026-06-09 14:55:54 +02:00
2026-06-09 19:47:57 +02:00

Тестовое задание ФХР

  • OS: Linux, AltLinux 11
  • Editor: PhpStorm, MS Code
  • AI Helper: gemini

Установка и запуск

Окружения у меня небыло настроено никакого, так что все настроено почти с нуля. У меня была готовая сборка MySQL, старая типовая сборка compose.yaml под Laravel и на этом наверное все.

Время: 1 час 25 минут.

For Linux env:

Алиасы для комфортного подключения vim ~/.bashrc

### Test FHR
alias fhr-mysql='docker exec -it mysql_fhr /bin/bash'
alias fhr-nginx='docker exec -it nginx_fhr /bin/bash'
alias fhr-redis='docker exec -it redis_fhr /bin/sh'
alias fhr-php='docker exec -u www-data:www-data -it php8_fhr /bin/bash'
mkdir ilya_test
cd ilya_test
git clone https://gitea.wired-mind.ru/ijin82/test-FHR.git .
cp main-repo/.env.example main-repo/.env
docker compose up

Установка компонент и миграции

fhr-php

composer i
php artisan migrate

Важно: Здесь нужно перезапустить docker compose потому что супервизор не смог запуститься без установленных компонент. Уверен это можно докрутить, но я уже слегка подустал.

Написать сортировку для массива числовых данных от 200 тысяч элементов

Запуск теста

fhr-php

php artisan app:test-fhr-sort

Не буду врать что я всегда знаю какую сортировку лучше всего использовать. В таких специальных случаях, когда нужно оперировать с большими массивами данных - конечно решение гуглится, делаются какие-то тесты, опрашиваются коллеги которые потенциально имели опыт с решением подобных задач. Конечно это решение я в голове не носил, а достал его из гугла.

Время: 25 минут.

Игроки и клубы, миграции, сидирование, выгрузка

fhr-php

# Клубы
php artisan db:seed --class=ClubSeeder 
# Игроки, здесь может потребоваться пара запусков,  
# я не полировал проверку уникальности номеров в клубе
# под капотом обычного сидирования
php artisan db:seed --class=PlayerSeeder

Выгрузка данных по игрокам и клубам вместе со структурой

cd /var/lib/mysql-files
mysqldump -u root -psecret test_fhr clubs players > clubs_and_players_dump.sql

После такой выгрузки, дамп появится в папке MySQL-files
Тестовый дамп лежит в корне проекта clubs_and_players_dump.sql

Время: 1 час 25 минут.

Выгрузка БД пользователей, более 500к+ строк

Сидируем БД

# Долгий сид достаточно, минут 15-20 возможно
php artisan db:seed --class=UserSeeder

Дальше открываем главную страницу http://test-fhr.ldev/
Хост test-fhr.ldev нужно будет прописать в hosts в зависимости от вашей ОС.

Время: 2 часа 30 минут.