2016-11-16 3 views
0

Я разрабатываю приложение для ставок в RoR, когда каждый аукцион имеет дату и время истечения срока действия. Я концептуально застрял в истечении текущих аукционов. Проблема в том, что я должен обслуживать список текущих аукционов для участника торгов. Мне почему-то нужно отказаться от аукционов с истекшим сроком, показывая только текущие.Что может быть альтернативой обычным опросам в этом случае?

Один из подходов заключается в том, чтобы до обслуживания списка проверять дату и время истечения для каждого из аукционов и отфильтровывать истекшие сами. Это наверняка представит накладные расходы.

Второй подход - опросить список аукционов с очень небольшим интервалом, скажем минута или около того, и пометить истекшие с битом expired в БД. Это еще хуже.

Как я могу играть здесь умнее?

+0

Можете ли вы опубликовать структуру базы данных для полей с истекшим сроком действия? И код, который вы используете для опроса/запроса? – guiniveretoo

+0

Я не закодировал опрос, это была мысль –

+0

Итак, поскольку это аукционный сайт, на аукционах есть какие-то «продление срока действия на XX раз, если кто-то предлагает в течение XX времени истечения срока действия»? – guiniveretoo

ответ

0

Вы можете создать словарь, в котором ключи являются временем истечения срока действия, а значения - ссылками на соответствующие аукционы. Когда вы начинаете аукцион, вы можете рассчитать время окончания аукциона и соответственно поместить его в словарь. Позже вы можете просто проверить словарь для любых записей за текущее время, а не сканировать список всех аукционов.

+0

Это не сработает. К моменту моего доступа некоторые аукционы, возможно, уже истекли. Они не будут сопоставлены с ведром в словарном ключе до конца. –

+0

Я предполагаю, что аукционы истекают каждые целые секунды. Вы должны иметь возможность отображать их в течение секунды. Если вы беспокоитесь о ползании по большим ведрам, просто используйте больше ведер ... Тем не менее, вы действительно можете проверить словарь для ссылок, который в будущем истечет через _any_ количество произвольных секунд. То есть в 13:10:15 проверить, чей срок истекает 13:11:15 и добавить любой в «короткий список»; вы можете затем уменьшить свой опрос (для аукционов, срок действия которых истекает через _current_), до этого короткого списка. –

Смежные вопросы