Size: a a a

2021 October 28

s

svasta☦️ in 💻 Coding Ru
Во первых нужно показать ивент сразу как только ко-во скачиваний перевалит за N
Во-вторых сбросив счетчик 12:00-15:00 я затру данные для 13:00 - 16:00
источник

A

Andrey Sea in 💻 Coding Ru
ну делай квантование, записывай в отдельную табличку количество скачиваний за 15 минут, потом делай выборку и смотри
источник

A

Andrey Sea in 💻 Coding Ru
показать сразу - ну раз в 5 минут смотри счётчик и как только перевалит, сразу показывай
источник

A

Andrey Sea in 💻 Coding Ru
по-моему у тебя алгоритм и цель у самого не продумана, а ты уже реализовать рвёшься )
источник

ME

Mikhail Efimov in 💻 Coding Ru
Смотри, если у тебя цель "посчитать количество событий за последние 3 часа", то без учёта времени вообще это сделать, конечно, невозможно. Простейший вариант учёта времени - записывать рядом с событием его временную метку. А дальше считать только те, метка которых больше, чем текущее время минус 3 часа
источник

s

svasta☦️ in 💻 Coding Ru
ну тоесть писать историю скачиваний в базе, а потом при каждой fileDownload смотерть на "метка которых больше, чем текущее время минус 3 часа" и если их кол-во больше чем N генерировать ивент?
источник

ME

Mikhail Efimov in 💻 Coding Ru
Возможно. В чем смысл этого ивента? Нужно ли посылать их несколько раз про одни и те же события?
источник

s

svasta☦️ in 💻 Coding Ru
Смысл в том что если пользователь скачивает много файлов об этом нужно опостить админа. Если одни и те же, то не нужно. Ну тоесть вот есть 20 событий скачиваний, у нас метка стоит N=5 в этом случае bulk download ивент должен появиться 4 раза после каждого 5 скачивания
источник

ME

Mikhail Efimov in 💻 Coding Ru
Если так, то можно хранить время последнего отосланного сообщения. И брать из базы для подсчёта только те события, которые были позже, чем max(curTime-3*hour, lastBulkTime)
источник

s

svasta☦️ in 💻 Coding Ru
не совсем понял
источник

ME

Mikhail Efimov in 💻 Coding Ru
Это уточнение к предыдущей схеме. Если делать точно по ней, то одни и те же события могут учитываться несколько раз. Если каждое событие учитывается не больше одного раза, то нужно все уже отосланные не считать
источник

ME

Mikhail Efimov in 💻 Coding Ru
Самый простой способ это сделать - брать с временной меткой после последнего отосланного
источник

s

svasta☦️ in 💻 Coding Ru
временной меткой доунлоада? Вы имеете ввиду сохранять историю скачиваний файл-дата?
источник

ME

Mikhail Efimov in 💻 Coding Ru
В момент формирования bulk event нужно сохранить в lastBulkTime время последнего скачивания, которое в него вошло.
И в следующий раз отсчитывать от него
источник

s

svasta☦️ in 💻 Coding Ru
блин... А я в этом случае не упускаю из вида ивенты.
Например 12:00-15:00, а потом я же затеряю 13:00-16:00
источник

s

svasta☦️ in 💻 Coding Ru
Я вроде уговорил всех заменить 3 часа на 1 час. И теперь я просто минуты ис екунды на ивентах(скачиваниях) ставлю 0 и увеличиваю каунтер на этом времени. Если показываю ивент балк, то обнуляю каунтер на этом времени, и удаляю все что были раньше. ну Типо в 9:00 я удаляю если есть 8:00, 9:00
источник

A

Andrey Sea in 💻 Coding Ru
ну пиши каждое скачивание в монго и делай потом запрос
источник

A

Andrey Sea in 💻 Coding Ru
что уж тут париться над оптимизацией, когда механизма нет )
источник

A

Andrey Sea in 💻 Coding Ru
а так какая-то странная и глупая хрень, нафига такое информирование получать ))) какая общая постановка задачи? топ скачиваемых отмечать на сайте медалькой или что?
источник

A

Andrey Sea in 💻 Coding Ru
почему за 3 часа... если хитрые запросы идут - ну база данных, писать всё туда, делать любые запросы по любому признаку в любое время без потери данных
источник