Учет пользователей, ведение статистики посещения?

Дорогие PHP программисты, к вам у меня данный вопрос). До сих пор, самостоятельно не приходилось вести подобную статистику и сейчас не хватает опыта для реализации.

При реализации на php+mysql, придется иметь минимум 2 таблицы в базе данных. Одну, для хранения информации о посещении сайта на сегодня, в которую будет записываться ip пользователя и пр. В итоге с посещаемость 50 000 в сутки, таблица получит 50 000 записей, что не является для меня привлекательным.

Какие есть альтернативы реализации ведения подобной статистики? Или как реализовать все грамотно не стреляя из пушек?
  • Вопрос задан
  • 5935 просмотров
Пригласить эксперта
Ответы на вопрос 5
nazarpc
@nazarpc
Open Source enthusiast
Вы такие варианты как Яндекс.Метрика или Google Analytics не рассматриваете?
Они дадут более качественную картину, чем ваше решение, слишком много всего нужно учесть чтобы получить качественную статистику.
Ответ написан
Комментировать
KEKSOV
@KEKSOV
Аппетит приходит во время еды. Это я к тому, что вряд ли Вам нужно просто считать пользователей (кстати, это не так уж и просто). Скорее всего, про каждого из них еще желательно сохранить максимально подробную инфу — куки, параметры запроса, переменные сессии, а потом еще захочется протоколировать кастомные события типа добавления товара в корзину и т.д. и т.п.

В свое время я реализовывал следующую схему — есть несколько, вполне себе нагруженных, веб серверов, которые не стоит напрягать лишними запросами к БД. На каждом из этих серверов есть простая PHP библиотека, с помощью которой каждый запрос превращается во временный файл — все очень быстро и прозрачно. Далее, есть один выделенный сервер (вообще в офисе), который по cron через HTTP опрашивает веб серверы и забирает у них накопленные за минуты логи с инфой о запросах. После чего в своем темпе обрабатывает эти логи и записывает их в базу статистики, которая крутится на своем отдельном сервере, не имеющим ничего общего с продакшн серверами.

Да, сырая база получается огромной, но никто не мешает ежедневно подсчитывать какие-нибудь агрегативные характеристики и удалять лишние записи.

Готов поделиться исходниками своей подсистемы.
Ответ написан
Rastishka
@Rastishka
Я по крону раз в день запускал скрипт, который анализировал acces log за сутки и вытаскивал из него все необходимые данные, которые уже сохранял в БД в нужном формате. Работало вполне быстро.
Ответ написан
Комментировать
ajaxtelamonid
@ajaxtelamonid
Laravel
Заводите еще таблицы, в которые пишите данные анализа собранного из первых таблиц. Запускайте анализ по крону, раз в час, и/или раз в сутки, смотря с каким квантованием по времени вам нужно будет эти данные смотреть в статистике. А данные из первых таблиц можно будет со временем чистить.
Ответ написан
Комментировать
@lubezniy
Webalizer вроде как раз в сутки парсит логи Апача и формирует html-страницы со статистикой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы