170 похожих чатов

Привет - подскажите на сколько надежен setInterval ? Можно ли

его использовать как планировщик задач - например с интервалом в секунду?
Например чтобы менять статусы у объектов которые истекли по времени.

15 ответов

21 просмотр

Это зависит от множества факторов, какая посещаемость, какая серверная архитектура, какое масштабирование и т.д., для очень высоконагруженных проектов node js не подходит, только отчасти, где нужна скорость, там нужно смотреть в сторону СИ.

Виктор-Чернов Автор вопроса
Sergey
Это зависит от множества факторов, какая посещаемо...

Да - я понимаю. Вопрос больше про надежность самого метода setInterval. Не отвалится ли в какой-то момент? Может ли долго работать без перерыва? Или лучше какой-нить внешний крон?

Виктор Чернов
Почему?

Потому что опыт показывает, что js на бэке пока не идеален

Sergey
Потому что опыт показывает, что js на бэке пока не...

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

Виктор-Чернов Автор вопроса
John Doe
что значит не отвалится?

В какой-то момент перестанет работать или например забьет память всю

Виктор Чернов
В какой-то момент перестанет работать или например...

А есть объяснение почему он должен перестать работать в какой-то момент или забить память?

Виктор-Чернов Автор вопроса

Нету, только слышал что такое возможно. Я как раз хотел узнать про такое объяснение если оно есть

Виктор Чернов
Нету, только слышал что такое возможно. Я как раз ...

У setInterval есть определенно два минуса 1. Неточность. Гарантированно, что колбек исполнится не раньше установленного времени. Но насколько "позже" по большей части зависит от загруженности ивентлупа и в процессора(от этого и внешний cron зависит) 2. Немаштабируемость. Если ты решишь запустить несколько процессов своего приложения, то у каждого инстанса будет так же запускаться setInterval А про "может перестать работать" или "забьёт память" это какое-то непонимание работы нода. В теории "забить память" можно через регистрацию кучи колбеков через setInterval, но вряд ли ты собираешься одновременно регистрировать миллионы колбеков

но это разве утечка будет а не голодание цикла?

Lёsha
но это разве утечка будет а не голодание цикла?

Стек это заранее выделенная память, занимает где-то один мегабайт в V8. Если в стеке соберётся примитивов больше чем на этот 1 мб, то будет переполнение. Из-за (...arr) мы кладём все примитива массива в стек

John Doe
Стек это заранее выделенная память, занимает где-т...

я думал что все примитивы в куче и стек имеет ограниченную память которой достаточно лишь для 16000 вызовов или сколько там, и никакая статика туда не попадает

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

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
10
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Карта сайта