LINUX.ORG.RU

Реклама на портале

 ,


0

1

По всему порталу есть энное количество блоков, предназначенных для отображения рекламы.

Администратор может установить в каждом блоке несколько рекламных баннеров, каждый из которых предназначен для определённой целевой аудитории.

Каждый баннер отображается или до достижения некоторого количества кликов/показов, или в течение определённго календарного времени.

Предположим, администратор установил баннер, который должен быть показан 100 раз, а затем деактивирован. Как отслеживать оставшееся количество показов? Нормально ли каждый раз обновлять уменьшать значение в базе данных? И есть ли другие способы?

В первую очередь, беспокоит вопрос, не будет ли сбоев, когда один и тот же баннер покажется сразу нескольким пользователям и к базе практически одновременно будет обращено несколько UPDATE запросов?

Как отслеживать оставшееся количество показов?

Слишком общий вопрос. Наверное во многом зависит от лежащей в основе CMS/Framework...

Нормально ли каждый раз обновлять уменьшать значение в базе данных?

Почему нет? Где-то (как-то) надо регистрировать количество показов && показано && осталось.

В первую очередь, беспокоит вопрос, не будет ли сбоев, когда один и тот же баннер покажется сразу нескольким пользователям и к базе практически одновременно будет обращено несколько UPDATE запросов?

UPDATE запрос на большинстве SQL-серверов операция атомарная. Т.е. такие запросы на одну и ту же таблицу (и одно и то же поле в таблице) «волшебным» образом выстроятся в очередь и выполнятся последовательно.

Таким образом запрос (окончательный вариант запроса может отличаться в зависимости от конкретного сервера):

UPDATE banners SET decrement = decrement - 1
отработает и обеспечит регистрацию показа правильно, изолировав операцию декремента счетчика в одном запросе от других.

valich ★★★
()

update banner set count = counter + 1 where counter < 100; - все ок будет. А вообще положишь ты базу апдейтами. ЛУчше какой-нибудь redis прикрути

dizza ★★★★★
()

у нас для этих целей используют OpenX чтобы не изобретать велосипед

shrub ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.