自动出价如何在拍卖网站中发挥作用

时间:2011-06-02 11:24:21

标签: jquery mysql cron

我对拍卖网站有疑问。我不是在询问整个过程,因为我知道这里不可能回答。我只需要带头解释

Autobids预订说明: -

如果用户为出价数量提供了出价高值和低值,则该出价数量将放置在该范围内。即使系统处于休眠状态,系统也应自动出价。

例如: -

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

让我们以目前的拍卖价格为11美元。然后机器处于活动状态,因此它应该以随机生成的时间间隔进行出价。

我在jQuery中密切关注这些。但即使它休眠也应该有效。

此技术已在许多实时拍卖网站中使用,例如

如果您登录,则可以在拍卖详情页面中查看该机器。 如果您有任何以前的经验,请分享。 Cron工作有意义吗?

我的表结构提到了here

这是用什么技术的?我怎么能这样做?

9 个答案:

答案 0 :(得分:9)

如果是针对您自己的网站,那么在对某个项目进行任何出价时我会采取的措施,只需检查同一项目的其他自动出价,并应用任何相关的循环,直到处理完所有自动出价为止。

答案 1 :(得分:3)

处理自动出价应该是服务器端流程,其中服务器获取您的高和低出价的值,以及您愿意进行的出价数量并将其保存在数据库中。这可以确保您可以去其他地方,然后浏览另一个页面,您的意愿仍将继续进行。

现在,你说这应该在第二个进程中完成,但实际上在服务器端,状态不会每秒都改变。只有当有人进行更改时才会更改状态(无论是否有新的出价。)一旦设置了新的出价,它将检查当前出价的价格是否在自动出价范围内,并按照以下流程进行操作。 / p>

在服务器端,服务器将收集当前拍卖的所有自动出价。我们将检查当前出价的价格,看它是否在任何自动出价范围内,并且会列出该范围内的所有自动出价。在此处,它会处理自动出价,直到价格不再出现在任何自动出价范围内。

答案 2 :(得分:3)

首先,你需要一个cron工作来结束拍卖并计算结果。这无法避免。

关于自动操作,只需在用户出价时运行,无需cron。 你的脚本会这样做:

  1. 获取当前用户的最大自动播放次数。 (发布表单的用户)
  2. 在同一个脚本中立即执行此操作的竞争。你竞争是合乎逻辑的 只针对当前的高价,因为他已经超过了其他人。
  3. 获取具有较高最高出价的用户(两者中的一个)。
  4. 将他作为当前的高价出售者并按“竞争对手的最高出价”+“最低出价增量”出价
  5. 发送消息(例如电子邮件)以了解两者的情况。
  6. 这里不需要任何cronjobs,一切都会立即发生

    此外,如果您需要显示实时出价,则需要一个ajax脚本,可以在短时间内(例如10秒或分钟)获取当前的高价。

答案 3 :(得分:1)

如果客户端计算机已关闭,则该进程显然正在/服务器上运行。

您是在尝试在自己的竞价网站上添加此功能,还是尝试在其他人的竞价网站上创建自动出价?

如果是前者,那么你可以每分钟解雇一个cron作业,看看要做出什么样的出价。或者你可以有一个数据库触发器,看看是否有人出价并代表他们进行新的(预先安排的)出价。

如果这是其他人的拍卖网站,则必须启动您的计算机以向其服务器发出此请求。

(或者,这可能只是列出的两个网站的链接垃圾邮件......)

希望有所帮助。

答案 4 :(得分:1)

我不会使用cronjob或类似的。

原则很容易总结: 使用new bidnew created auto-bid作为触发器 - 无需cronjobs或类似内容。领导者是具有最高限度的领导者。当前价格为2nd highest limit + bid-step

在执行当前的主要出价之前,请考虑从第二高的用户创建loosing bid。因此,对于用户来说,为什么来自领导者的自动出价会更高。

当两个auto-bid具有相同的最高值等时,您必须考虑一些特殊情况,但这会使我的答案成为文本之墙。这些案例很容易处理。 (即以最早的自动出价创建日期为用户作为领导者。)

这里有一些原因,为什么cronjob是一个非常糟糕的主意(在我看来):

  • 它较慢,因为它适用于间隔。上面的解决方案适用于需要时立即触发的触发器。
  • 它消耗的资源超过了必要的资源。上面的解决方案适用于触发器,当且仅当必须执行某些操作时才触发。 Cronjob解决方案一次又一次地运行自动出价,而不消耗CPU时间,大部分时间都在生成磁盘I / O等。
  • Cronjob解决方案具有性能竞争条件。必须完成作业,直到下一个作业间隔开始。如果间隔为1秒,则每个更新过程必须在不到一秒的时间内完成,否则它们会重叠。或者你必须同步这个......

你也不需要cronjob来结束拍卖。拍卖会在特定日期/时间结束,当拍卖结束时,拍卖结束。不接受进一步的出价。这里也不需要cronjob。

答案 5 :(得分:0)

对于自动出价数据库中会有一个字段。 如果设置为自动出价,我们会在服务器中设置 cron作业,该服务将在特定时段内投放并检查 autobid flag 并更新出价

答案 6 :(得分:0)

我的建议是在检索html页面时计算每个客户的出价。 例如 当我到达您的拍卖网站时,您的服务器会说有一个用户自下午3点起每5秒自动出价一次,如果高和低在范围内且低于出价金额,如果现在是下午4:33那么根据自下午3点以来经过的时间计算当前出价。

现在,我将收到的html将在我的浏览器上每秒更新一次,显示当前的出价,并且每5秒自动出价一次前面提到的用户。 一旦我对某个商品出价,服务器就会检索该商品的当前出价,如果我的出价最高,则返回当前出价者,如果他们的出价更高,则返回其他人的出价。

这会让它看起来好像都是实时发生的。

答案 7 :(得分:0)

我可能在这里很密集,但不仅仅是

  • 新出价
  • 最高低(brr)获胜(例如: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) ))
  • step'width'== ( ( 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

或者出价 是否已“播出”? (或者在我的生活中错过了任何行动/投标(固定价格或一直谈判)我是否错过了一些社会教育)?

答案 8 :(得分:0)

只是在猜测,但是您是否正在尝试通过实时倒计时编写便士拍卖来关闭时间并不断更新出价金额?所有这些都发生在一个页面上的几个项目?

最佳答案:对页面上的每个项目使用iframe,让它们每2秒刷新一次,检查数据库中的信息并在iframe中显示出价信息。您还可以在每个iframe窗口中使用java倒计时自动收录器进行实时关闭时间倒计时显示..