2016-10-09 10 views
0

Я внедряю node.js систему создания и голосования опроса в режиме реального времени, где администратор может создать опрос и установить дату закрытия, а затем, когда эта дата будет получена, система закрывает опрос, отправляет подписчиков пользователей по электронной почте и пользователи больше не могут голосовать. Я реализовал все остальные функции, но я боюсь с закрытием опросов в эту дату. Я подумал о каком-то постоянном планировщике, подобном Cron, где я установил работу по закрытию опроса в установленную дату, но я не знаю, является ли это наилучшим подходом. Есть ли у вас идеи по решению этой проблемы? СпасибоКак реализовать функцию закрытия даты голосования?

+0

Ваша программа NodeJS всегда работает на сервере? – AppleCrazy

+0

Я не уверен, действительно ли я понял вопрос, но я скажу, что да, это так. –

+0

Вы используете базу данных или все хранится в памяти? – AppleCrazy

ответ

0

Существует два основных подхода - в процессе и вне процесса. В процессе работы проще, но для этого требуется, чтобы ваша основная программа работала. Внепроцесс более надежный, потому что вы можете использовать системы, основной функцией которых является надежное выполнение запланированных заданий (например, cron).

Для подпрограмм в Javascript, которые я предлагаю при запуске, прочитайте записи опроса, которые показывают, что опросы остаются открытыми (булевский флаг, а не дата), вычитают текущую дату с даты закрытия и используют setTimeout, чтобы запланировать вызов функции, который находится далеко в будущем (или сразу, если разница отрицательна). Эта функция может делать все, что вам нужно (отправлять электронные письма, обновлять записи и т. Д.). Последнее, что нужно сделать, это обновить оригинальную запись, чтобы указать «успешно закрыто». Вы хотите, чтобы эта функция была re-entrant, поэтому, если ваш процесс замирает на полпути, при следующем запуске он все равно будет видеть эту запись опроса с датой закрытия в прошлом, но флаг «успешно закрыт» и повторите попытку.

+0

Спасибо за ответ. Любые предложения по чтению о том, как включить функции повторного входа в Javascript? –

+0

@EdsonBueno просто читал об этом в целом, нет ничего конкретного для конкретного языка. –