Как сделать интернет-аукцион: долго, дорого, с блэкджеком
Когда перед нами заказчик поставил задачу сделать аукцион, мы взялись за нее не раздумывая. А что: каталог товаров есть, пользователи есть, нужно просто запустить таймер для каждого лота и принимать ставки. После выигрыша лота идет оформление заказ как в интернет-магазине. Собственно цена и сроки проекта верстались из расчета интернет-магазин + немного непонятной фигни. Ну срок в 3 месяца.
И мы его сделали. stavkazolota.ru. Получился действительно интернет-магазин. Каждый товар выставлялся на торги и превращался в лот. Для лота система генерировала начальное время торгов, конечное время. В период активности лота аукцион принимал ставки. Простой механизм: из браузера на сервер посылается AJAX запрос со ставкой. Если время не вышло и ставка корректная она принимается. Самая важная часть аукциона - обновление лотов в браузере пользователя. Ведь другие пользователи также делают ставки и при просмотре лота мы должны видеть в реальном времени, что кто-то другой сделал ставку. "В реальном времени" - это в идеале синхронно. Ставку должны видеть сразу все. Самое первое и очевидное решение: периодически посылать AJAX запросы на сервер и просить сервер обновить информацию о просматриваемых лотах. Так и было сделано. Раз в 5 секунд мы получали данные с сервера. Когда кто-то делал ставку - время торгов увеличивалось на 15 секунд. В результате 5ти секундная задержка была незаметна.