Создание сценария аукциона для запуска и остановки аукционов в определенное время. - PullRequest
0 голосов
/ 13 августа 2011

Я создаю простое приложение аукциона. Мне нужно, чтобы аукционы начинались и заканчивались в определенное время. Должна ли страница, отображающая открытые аукционы, просто выполнить запрос, чтобы найти все аукционы с текущим временем после времени начала и до времени окончания? Или лучше поставить скрипт, который устанавливает для «активного» столбца значение «Истина»? Если это так, нужно ли мне использовать какой-либо тип настройки cronjob?

Ответы [ 2 ]

2 голосов
/ 13 августа 2011

Нет cron и «активный» столбец не требуется. Просто перечислите аукционы, используя что-то вроде:

select *
from auctions
where
    start < now()
    and end > now()

Когда пользователь делает ставку, используйте следующее:

update auctions set
    bid = $bid,
    highest_bidder = $bidding_user_id
where
    id = $this_auction_id
    and start < now()
    and end > now()
    and bid < $bid

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

0 голосов
/ 13 августа 2011

Просто установите поле «close_time» в таблице mysql вместе с аукционом.Когда вы добавляете строку, заполните это поле time() + whatever, чтобы установить close_time для представления некоторой точки в будущем.

Затем настройте скрипт, который выполняет простой запрос:

'UPDATE auctions_table SET active = FALSE WHERE active = TRUE AND close_time <= UNIX_TIMESTAMP()'

Сохраните этот запрос на php-странице, называемой чем-то вроде close_active_auctions.php, и устанавливайте его в cron каждые 10 секунд или около того (или как часто вам нужно).

...