▶ 28:39
Пишу трекинг на PHP: логика работы трекера и как Redis ускоряет обработку запросов
👁
213
на YouTube
👍
15
💬
5
📊
138
на aff.top
О чём это видео
Автор продолжает серию по созданию собственного трекера трафика на PHP и разбирает базовую архитектуру обработки клика. Проект перенесён в папку app, добавлены Dockerfile, Composer, autoload классов, конфиг, подключения к MySQL и Redis. На примере index.php показывается, какие данные можно собрать при клике: IP, host, referer, user-agent, headers, cookies, GET/POST-параметры, URI, query string, метод запроса, протокол, порт и время. Основной акцент — алгоритм выдачи click ID: новый пользователь получает ID и cookie, данные краткосрочно пишутся в Redis, а фоновый worker затем переносит их в MySQL, чтобы ускорить редирект и не нагружать базу.
Ключевые тейки
-
PHP собирает ключевые данные кликаНа первом запросе можно снять IP, домен, referer, user-agent, headers, cookies, GET/POST-метки, URI, query string, метод, протокол, порт и время запроса для дальнейшей фильтрации.
-
Redis нужен для быстрого редиректаКлик сначала пишется в Redis, потому что чтение и запись идут из оперативной памяти быстрее, чем в MySQL. Это позволяет быстро отдать пользователю нужный сайт без задержек.
-
Worker переносит клики в MySQLRedis используется как временный буфер, а фоновый worker спокойно забирает данные и складывает их в долгосрочную базу MySQL, не тормозя обработку живого клика.
-
Click ID завязан на Redis и cookieЕсли в Redis нет записи и cookie пустая, генерируется новый click ID, ставится cookie и фиксируется уникальный клик. Повторные визиты определяются по cookie и временной записи.
-
UTM-метки остаются основой аналитикиВсе GET-параметры после знака вопроса собираются вместе с кликом. Эти метки нужны, чтобы понимать источник, связку, кампанию и сопоставлять клики, лиды и дальнейшую статистику.
-
Composer упрощает структуру проектаAutoload Composer подключает классы из src и общий config без ручного require в каждом файле. Это делает проект трекера масштабируемее по мере роста количества классов.
Главы видео
- 0:00 Вступление: цель серии видео и обзор проекта.
- 1:42 Ссылки на GitHub и Telegram: где забрать код.
- 2:16 Общая логика сбора данных трекером (схема работы).
- 3:53 Обзор структуры проекта: Docker, Composer и новые файлы.
- 5:22 Настройка Docker и расширений PHP для работы с БД и Redis.
- 6:10 Работа с Composer и автозагрузка классов (Autoload).
- 8:50 Организация классов в папке src: базы данных, Redis, Helpers.
- 10:21 Система миграций БД: как развернуть проект на сервере.
- 11:05 Конфигурационные файлы: хранение констант и настроек.
- 12:15 Разбор Index.php: подключение автолоадера и пространств имен.
- 13:30 Тестирование соединений с MySQL и Redis.
- 14:08 Практика: какие данные о клике собираем (IP, User-Agent, Cookies, UTM).
- 16:30 Демонстрация результата: подробный разбор JSON с данными клика.
- 21:00 Алгоритм выдачи и проверки уникального Click ID (блок-схема).
- 22:15 Зачем нужен Redis и как работает фоновый Worker.
- 27:57 План на следующее видео: генерация Click ID и запись в БД.
Вопросы и ответы
Какие данные по клику можно собрать на PHP?
Можно собрать IP, host, referer, user-agent, headers, cookies, GET и POST параметры, URI, query string, метод запроса, протокол, порт и время клика.
Зачем трекеру Redis, если есть MySQL?
Redis нужен для быстрой временной записи и проверки кликов в оперативной памяти, чтобы не тормозить редирект тяжёлыми операциями чтения и записи в MySQL.
Как автор предлагает выдавать click ID пользователю?
Если записи в Redis нет и cookie пустая, генерируется новый click ID, он пишется в cookie, а данные о клике временно сохраняются в Redis как уникальные.
Как обрабатывать повторный клик того же пользователя?
Если cookie есть, а запись в Redis уже истекла, клик считается неуникальным, снова пишется в Redis для статистики, а пользователю отдаётся тот же подходящий сайт.
Почему нельзя грузить много JS на первом клике?
Первый запрос должен отработать максимально быстро: PHP собирает данные, делает проверку и редиректит. JS автор предлагает подключать уже после перехода на целевой сайт.
Обновлено: 10 октября 2026