我有一个拍卖网站,让我的用户可以进行无限量的自动操作。
要监视这些自动操作,必须每秒检查一次数据库。
我的问题是,如果最好每分钟使用mysql触发器事件或用户执行一个60秒循环php脚本的cronjob。
如果我使用mysql触发器事件,则会在彼此上有数百个事件堆栈,并在不同时间触发。这有可能吗? ANd不是服务器负载控制是非常有用的。我听说在某个schedueled事件时数据库将被锁定。我正在使用innoDB表btw。
我希望有人可以对这种情况有所了解。
问候!
答案 0 :(得分:1)
您最好运行一个永久运行并监视数据库的单独脚本。那样你就不需要cron了。也没有大量的触发因素。
但您可能想重新考虑整个问题。没有必要每秒实际更新出价。您只需填写过去x分钟/小时,当有人实际将其浏览器指向拍卖或进行人工出价时。如果是全部自动操作,您可以轻松地向前计算向后。
答案 1 :(得分:1)
数据库处理与其他请求无异的预定请求。但是,由于许多计划请求包含锁定数据库的数据库和表维护操作,因此它们并不罕见。
话虽如此:由于您的系统必须对用户的操作作出反应,因此技术上更好的方法是使用触发器。实际上,当您的站点具有高负载时,这可能会导致性能问题 - 尽管使用预定事件可能会导致同样的问题。
我的建议是将您的逻辑放在存储过程中,并从触发器调用这些存储过程。当您发现触发器无法跟上时,您始终可以删除触发器并从cron作业调用存储过程。
答案 2 :(得分:0)
我可能会对您的自动出价问题的解决方案进行一些不同的建模:
基于事件的方法怎么样?您存储了用户的自动出价请求,如果有人实际出价对象,则会处理之前排队的自动出价。
这有以下好处:
答案 3 :(得分:0)
你可以使用bash& shell脚本实现了这个自动出价过程的工作。 请参阅此链接,您将获得一个想法:Bash script that executes php file every 5 seconds