Как работают торги на аукционах? - PullRequest
2 голосов
/ 02 июня 2011

У меня вопрос по сайту Аукциона.Я не спрашиваю обо всем процессе, так как знаю, что здесь невозможно ответить.Мне просто нужен запрос с объяснением

Объяснение для бронирования Autobids: -

Если пользователь задает значение High и Low для цены предложения с количеством ставок в этом диапазоне.Система должна сделать ставку автоматически, даже если система находится в спящем режиме.

Например: -

High (Bid from) : 10
Low  (Bid To)   : 20
Number of bids  : 5

Давайте возьмем текущую цену аукциона, равную $ 11. Когда машина активна, значит, она должнасделайте ставку со случайно сгенерированным временным интервалом.

Я сделал это близко в jQuery.Но он должен работать даже в спящем режиме.

Этот метод уже используется на многих сайтах живых аукционов, таких как

Если вы войдете в систему, тоВы можете увидеть машину на странице деталей аукциона.Если у вас есть какой-либо предыдущий опыт, пожалуйста, поделитесь им.Имеет ли смысл работа Cron?

Моя структура таблицы упоминается здесь .

Какая техника используется для этого?Как я могу это сделать?

Ответы [ 9 ]

9 голосов
/ 04 июня 2011

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

3 голосов
/ 09 июня 2011

Для начала вам нужна работа cron, чтобы закончить аукцион и рассчитать результат.Этого нельзя избежать.

При автоматической ставке она может быть просто запущена, когда пользователь делает ставку, без крона.Ваш скрипт будет делать:

  1. Получить максимальную автобид текущего пользователя.(пользователь, который публикует форму)
  2. В этом же сценарии немедленно запускается соревнование за это действие.Логично, что вы будете конкурировать только с текущим хайбидером, потому что он уже перевесил остальных.
  3. Получите пользователя с большей максимальной ставкой (один из обоих).
  4. Поместите его в качестве текущего участника торгов и разместите для ставки "максимальную ставку конкурента" + "минимальный прирост ставки"
  5. Отправляйте сообщения (например, по электронной почте) о том, что случилось с обоими.

Здесь не нужно никаких cronjobs, все происходит мгновенно

Далее, если вам нужно показывать ставки в режиме реального времени, вам нужен скрипт ajax, который выбирает текущие высокие ставки в течение короткого периода времени, например, 10 секунд или минут..

3 голосов
/ 05 июня 2011

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

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

На стороне сервера сервер будет собирать все автоматические ставки для текущего аукциона.Цена текущей ставки будет проверена, чтобы увидеть, находится ли она в диапазоне какой-либо автоматической ставки, и она создаст список всех автоматических ставок в пределах диапазона.Отсюда он обрабатывает автоматические ставки до тех пор, пока цена больше не будет находиться в пределах диапазона каких-либо автоматических заявок.

1 голос
/ 10 июня 2011

Я бы не стал использовать cronjob или подобное для этого.

Принцип легко подвести итог: используйте new bid и new created auto-bid в качестве триггера - никаких cronjobs или аналогичных.Лидер - тот, у кого самый высокий лимит.Текущая цена - 2nd highest limit + bid-step.

. Подумайте о том, чтобы сделать loosing bid от второго по величине пользователя прямо перед тем, как сделать текущую ставку.Поэтому для пользователей более понятно, почему автоматическая ставка от лидера достигла такого высокого уровня.

Вам следует подумать о некоторых особых случаях, когда два auto-bid имеют одинаковое наибольшее значение и т. Д., Но это сделало бы мой ответстена текста.И эти случаи просты в обращении.(то есть, принимая пользователя с самой старой датой создания автоматической ставки в качестве лидера.)

И вот несколько причин, по которым cronjob - очень плохая идея (на мой взгляд):

  • Этомедленнее, потому что он работает с интервалом.Приведенное выше решение работает с триггерами, которые срабатывают немедленно при необходимости.
  • Он потребляет больше ресурсов, чем необходимо.Решение выше работает с триггерами, которые срабатывают, если и только если что-то должно быть сделано.Решение Cronjob повторяет автоматические ставки снова и снова, при этом ничего не делая, кроме затрат времени процессора, производства дискового ввода-вывода и т. Д.
  • Решение Cronjob имеет гонку производительности.Работа должна быть завершена до начала следующего интервала работы.Если у вас есть интервал в 1 секунду, каждый процесс обновления должен быть завершен менее чем за секунду, или они перекрываются.Или вам нужно синхронизировать это ...

И вам не нужен кронобзор для окончания аукционов.Аукционы заканчиваются в определенную дату / время, и когда это происходит в прошлом, аукцион заканчивается.Дальнейшие предложения не принимаются.Здесь тоже нет необходимости в cronjob.

1 голос
/ 03 июня 2011

Если клиентский компьютер выключен, то, очевидно, процесс выполняется на / сервере.

Вы пытаетесь добавить эту функцию на своем собственном аукционном сайте или пытаетесь создать автоматические ставки на чужом аукционном сайте?

Если первое, то вы можете запускать задание cron каждую минуту, чтобы увидеть, какие ставки делать. Или у вас может быть триггер базы данных, который проверяет, не перебил ли кто-то ставку, и делает новую (заранее оговоренную) ставку от его имени.

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

(Или это может быть просто ссылочный спам для двух сайтов в списке ...)

Надеюсь, это поможет.

0 голосов
/ 03 июня 2015

Просто угадайте, а вы пытаетесь написать пенни-аукцион с текущим обратным отсчетом времени закрытия и постоянно обновляемыми ставками? С несколькими предметами на одной странице, и все это происходит?

Лучший ответ: используйте iframe для каждого элемента на странице, обновляйте их каждые 2 секунды, проверяйте информацию в базе данных и отображайте информацию о ставке в iframe. Вы также можете использовать тикер Java для обратного отсчета времени закрытия в каждом окне iframe.

0 голосов
/ 08 июня 2011

Я могу быть здесь дремучим, но не так ли

  • новая ставка
  • выигрывает самый высокий низкий (брр) (например, Hi / Lo / Step = 10/20/5), назовем его A
  • получить следующий самый высокий минимум (например, Hi / Lo / Step = 11/17/6), назовем его B
  • установить новую цену на A(Lo) - ( ( A(Lo) - A(Hi) ) / A(Step) ) * FLOOR( ( A(Lo) - B(Lo) ) / ( ( A(Lo) - A(Hi) ) / A(Step) ))
  • шаг 'ширина' == ( ( A(Lo) - A(Hi) ) / A(Step) ) = (20-10)/5 = 2
  • уточнить: цель - A(Lo) - stepwidth * FLOOR((difference between A & B)/stepwidth)
  • 20 - 2 * FLOOR( ( 20-17 ) /2) => 20 - 2 * FLOOR(3/2) = 20 -2 * 1 = 18 для A

Или на торгах должно быть , которое нужно «разыграть»? (или пропустил любое действие / предложение в моей жизни (фиксированная цена или переговоры), я пропускаю какое-то социальное образование)?

0 голосов
/ 07 июня 2011

Мое предложение состоит в том, чтобы определить цену для каждого клиента, когда он получит HTML-страницу.Например, когда я попадаю на ваш аукционный сайт, ваш сервер говорит, что есть пользователь, который автоматически делает ставки каждые 5 секунд, начиная с 15:00, если максимальный и минимальный значения находятся в диапазоне и ниже, чем количество заявок, и если сейчас это 16:33.Затем рассчитайте текущую ставку на основе времени, прошедшего с 15:00.

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

Это сделаеткажется, что все это происходит в режиме реального времени.

0 голосов
/ 04 июня 2011

Для автоматической ставки в базе данных будет поле .Если он установлен для автоматического назначения ставок, мы установим задание cron , которое будет выполняться на сервере, который будет работать в определенный период, и отметим флаг autobid и обновим ставку

...