2009-11-14 103 views
4

我有一个拍卖网站,让我的用户无限量的自动装订。Mysql触发器/事件与Cronjob

要监视这些autobiddings,必须每秒检查一次数据库。

我的问题是,如果最好使用mysql触发器事件,或者每分钟用户执行60秒循环php脚本的用户cronjob。

如果我使用mysql触发器事件,将会有数百个事件堆叠在彼此之上,并在不同的时间触发。这甚至有可能吗? ANd不是服务器负载磨损而是令人满意的。我听说在某个地方数据库将被锁定,同时有一个调度事件。我使用innoDB表btw。

我希望有人能够对此发表意见。

问候!

+0

什么是你的autobid的定义,当有两个挂起autobids他们如何相互作用?什么使拍卖结束?也许一个计划在拍卖结束时运行的cron工作来评估谁赢了。该网站只会阻止竞拍成品拍卖。 cron工作将通过电子邮件向谁发送电子邮件。 – Don 2009-11-15 06:44:46

+0

嗨,让我稍微解释一下这个概念。拍卖开始于0.00欧元。当有人放置一点时,价格上涨0.01欧元。投标是他们购买信用的地方。当拍卖即将结束并有人下标时,拍卖会延长60秒。所以当人们想要离开时,他们可以进行一次汽车招标。这些出价将不得不在拍卖结束前随机放置,再延长一分钟的时间,等等。投标不会相互影响。一个自动贩卖是随机选择的,而不是最后一个竞标者。 – 2009-11-15 12:11:26

+0

+1因为我有同样的问题 – Gowri 2011-03-22 11:44:31

回答

1

你最好运行一个独立的脚本,它可以永久运行并监视你的数据库。这样你就不需要cron。也不是大量的触发器。

但是你可能想重新考虑你的整个问题。没有必要每秒更新出价。当某个人实际指向浏览器进行拍卖或进行手动出价时,您只需填写过去的x分钟/小时。如果它是全部自动填充,你可以轻松地向后计算。

+0

嗨,谢谢你的反应。这可能是解决问题的办法。但我希望能够向用户发送第二封他们赢得该活动的电子邮件。如果让我们看到有3人启用了他们的自动出价,并且他们离开了网站,那么在剩下出价的时间内,所有出价都必须随机完成。出价完成后,电子邮件必须发送。我真的希望整个过程不需要有人在网站上完成。 – 2009-11-14 18:25:42

+0

然后我的答案的第一部分,即永远运行(一段时间(真正)循环和睡眠1秒)的单独脚本将是最好的选择 – Jauco 2009-11-16 09:11:43

1

数据库处理与其他请求没有区别的预定请求。但是,由于许多计划的请求包含锁定数据库的数据库和表维护操作,所以它们并不少见。

话虽如此:由于您的系统必须对用户的操作做出反应,因此执行此操作的技术优选方式是使用触发器。实际上,当你的站点有很高的负载时,这可能会导致性能问题 - 尽管使用预定的事件可能会导致同样的问题。

我的建议是把你的逻辑存储在存储过程中,并从触发器调用这些存储过程。当您发现触发器没有跟上时,您可以随时删除触发器并从cron作业调用存储过程。

+0

嗨,谢谢你的答案。我对此有一个跟进问题。这看起来像是一个初学者问题,但究竟是什么触发器,mysql触发器。什么是存储过程。我假设存储过程是我写的更新数据库的php脚本。 如果我做一个PHP脚本,永远循环直到永恒,这会消耗大量的CPU功率? – 2009-11-14 18:28:47

+0

触发器是当表中的数据更改时自动执行的SQL代码段。存储过程是捆绑在一起的SQL命令的集合。只需检查MySQL网站上的文档。 – Matijs 2009-11-14 23:41:42

0

我会解决的模型可能你的自动出价问题有一点不同:

如何基于事件的方法吗?您存储用户的自动出价请求,并且如果有人实际出价处理先前排队的自动出价对象。

这有以下好处:在数据库上

  • 负荷分布有机
  • 你只做那些实际需要的时间查找。
  • 它是实时的,而不是蜱基于
  • 更容易推理的业务/应用逻辑,因为它是本地的,而不是全球
+0

嗨,谢谢你的回答,但我不认为我可以使用这个模型。假设3个人启用了他们的autobids,并离开该网站。现在没有人在网站上,或在网站上忙碌。拍卖结束之前,所有的拍卖都必须完成。 – 2009-11-14 18:22:39

+0

根据我的理解,它仍然有效,因为如果没有人访问网站,没有人可以出价,所以自动出价不需要处理,对吧? 当然,如果您想在拍卖结束时发送通知(电子邮件,短信等),那么您需要观察系统。虽然我认为使用一个每5分钟运行一次的cron就足够了,并检查所有已结束的拍卖。这会对你有用吗?还是对拍卖应该如何工作有额外的要求? – tosh 2009-11-14 19:02:59

+0

那么人们付出的出价,所以重要的是所有的autobids被放置。 – 2009-11-14 23:15:47