Система кеширования просмотров устроена так: раз в 5 минут запускается задача viewupdates, которая из таблицы core_view_updates разносит просмотры по соотв. местам (темы, объявления, реклама и т.д.)
У меня получилось так, что просмотров добавляется очень много и задача viewupdates не успевает перенести все просмотры в базу запускаясь раз в 5 минут. В итоге просмотры копятся и новые темы вообще не обновляются (т.к. сортировка по умолчанию по возрастанию id).
В итоге поменял сортировку в файле applications/core/tasks/viewupdates.php
строку
$result = \IPS\Db::i()->select( 'classname, id, COUNT(*) AS count', 'core_view_updates', NULL, NULL, 20, array( 'classname', 'id' ) );
поменять на
$result = \IPS\Db::i()->select( 'classname, id, COUNT(*) AS count', 'core_view_updates', NULL, '`id` DESC', 20, array( 'classname', 'id' ) );
чтобы первыми обновлялись новые темы.
И изменил время запуска задачи на каждую минуту.
Это помогло конечно, но такой костыль не самое лучшее решение т.к. при увеличении нагрузки просмотры снова начнут накапливаться.
Как быть? Увеличивать время выполнения задачи? Ускорять процесс переноса? Почему-то всего 200-250 записей успевает раскидать по местам из таблицы core_view_updates за один цикл запуска задачи. Это очень мало.