▶ 28:39
Пишу трекинг на PHP: логика работы трекера и как Redis ускоряет обработку запросов
📊
3
на 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 в каждом файле. Это делает проект трекера масштабируемее по мере роста количества классов.
Вопросы и ответы
Какие данные по клику можно собрать на 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 автор предлагает подключать уже после перехода на целевой сайт.
Обновлено: 17 мая 2026