Задать вопрос
@Andranikk

Как лучше вести логи действий пользователей на сайте?

Всем привет!
Имеется небольшая онлайн игра, с очень простой системой: купил дерево -> собрал урожай -> продал урожай. Необходимо отслеживать и записывать все действия пользователей в результате которых менялся баланс аккаунта, то есть необходимо знать когда, с какого ip, какое действие было совершено, насколько был изменен баланс акаунта и сколько он составил после этого. Сначала подумал о записи в БД после каждой операции, но таблица выйдет слишком большая, поэтому подумал о записи в файл, при этом создать отдельный файл для каждого пользователя, в результате написал функцию:
public static function addLog($user, $event)
    {
        $file  = \Config::LOG_PATH . $user['id'] . '.log';
        $time  = date('Y.m.d H:i:s');
        $ip    = $_SERVER['REMOTE_ADDR'];
        $coins = (int) $user['coins'];
        $log   = "{$time}: {$ip}: {$coins}: {$event}\n";
        file_put_contents($file, $log, FILE_APPEND);
        return true;
    }

Хотелось бы знать насколько это правильно, не слишком ли простой/грубый/тупой способ?
  • Вопрос задан
  • 3730 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Это какой-то аналог fruitfarm?
Пишите лучше в базу.
К тому времени, как она станет слишком большой, вы, скорее всего, уже не один раз поменяете архитектуру.
Ответ написан
xSkyFoXx
@xSkyFoXx
Если событий не много (не десятки миллионов в день) - тогда пишите в базу и постарайтесь избегать индексы, иначе ваша база данных прикажет долго жить.
Если событий достаточно много (десятки миллионов в день) - задумайтесь о текстовых логах в csv или любом другом просто-интерпретируемом формате.
Если событий очень много (big data) или у вас имеется нагруженный SaaS - лучше использовать какую-либо централизованную систему, типа fluentd.

Мигрировать с одного подхода на другой по мере роста количества клиентов не возбраняется :) Но учтите, что считать аналитику по медленным источникам (файлы) дольше, чем по базе данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽