Всем доброго дня! Перед нами стоит задача запрограммировать аукцион. Нет, не типа всем известного Гагена, скорее упрощенная версия eBay, где выигрывает тот, кто сделал последнюю наибольшую ставку. Сам процесс разыгрывания лотов не составляет проблемы, а мгновенное (или близкое к тому) оповещение участников аукциона после завершения торгов (время аукциона вышло), кажется задачей посложнее. Тривиальное решение: 1. циклически сканировать таблицу базы с аукционами, находя в ней завершенные (запись в поле end_time < текущее время) 2. участникам торгов этого аукциона рассылать письма 3. перемещать этот аукцион в архив / отмечать как проверенный, чтобы не разослать письма по второму разу. Сложности: 1. время работы сценариев ограничено -> сценарий не будет работать вечно. 2. даже если отредактировать php.ini для этого сценария так, чтобы он работал без ограничений, не вижу возможности проверить текущее состояние работы после его запуска. 3. создать 1440 CronJobs для ежеминутного запуска сценария тоже не лучшая идея. Альтернативно можно выделить эту задачу в, скажем, программу на Java, которую вполне можно запустить в одной из консолей и контроллировать работу, но решение средствами PHP было бы тут более интересным. Может быть кто-то уже решал подобную задачу?
Делайте как php делает сборку муссора сессий. Думаете, как сессия автоматически удаляется через N секунд неиспользования? Параметр session.gc_divisor задает вероятность запуска сборщика муссора. Т.е. если он равен 1000, то вероятность 1:1000, что при конкретном запуске скрипта он запустится. Вот и вы так же, в зависимости от посещаемости меняйте его автоматически чтобы примерно раз в минуту запускался.
[vs] ты че, это ж аукцион. ставки можно будет ставить уже после завершения, а это ж пипец чо. так нельзя.
igordata А при установки ставки проверять, не просрочен ли аукцион, и если просрочен, но не закрыт - закрывать и не принимать ставку.