Мы используем последнюю версию Discourse. Недавно я заметил, что отчёты по метрикам активности на странице администрирования обновляются только один раз в день. А точнее: только при первом входе в панель управления в течение дня. Это нормально? Можно ли настроить Discourse так, чтобы этот отчёт обновлялся чаще?
По моему пониманию, статистика в разделе «Активность» должна обновляться каждые полчаса. Однако этого, похоже, не происходит. Настроек для конфигурации этого процесса нет. Мы разберёмся, что происходит.
Я наблюдаю ту же проблему на других сайтах, поэтому не думаю, что дело в вашей установке. Проблема, которую я вижу, заключается в том, что статистика в разделе «Активность» панели администратора не синхронизируется со статистикой отдельных отчётов, из которых извлекаются данные. Мы разберёмся, что происходит в данном случае.
У меня есть администратор, который хочет получать подсчёты просмотров страниц за сегодняшний день с точностью до минуты.
Эти данные не обновлялись уже давно:
Я все еще вижу эту проблему в столбце «Сегодня» метрик активности на Meta. Я почти уверен, что результаты должны кэшироваться только в течение получаса, но кажется, что результаты для этого раздела кэшируются в течение более длительного периода времени.
Хотя на странице администратора указано, что обзор был обновлён несколько минут назад, это происходит только раз в день. Как настроить обновление чаще одного раза в день?
РЕДАКТИРОВАНО:
Выяснил, что проблема только в виде месячного календаря. Если переключиться на недельный вид, статистика корректна.
РЕДАКТИРОВАНО 2:
Хорошо. Не всё актуально и в недельном виде.
Я не тот человек, который может это исправить, но проблема может быть связана с тем, что происходит здесь:
Изучив этот файл, я вижу, что задумано, чтобы статистика кэшировалась только 30 минут, но, насколько я могу судить, статистика обновляется только раз в день.
Скорее всего, это не связано, но метод setex, похоже, принимает время в секундах, а не в минутах. В коде при вызове метода передаётся 35.minutes. Я предполагаю, что здесь работает какая-то «магия» Rails, которая выполняет конвертацию в секунды.
Хорошо, это ожидает проверки/слияния, но это должно исправить проблему:
Это была ошибка в нашей библиотеке cache.rb, где мы не передавали значение expires_in, и в результате использовалось значение по умолчанию — один день, вместо 30 минут.