使用php/MySQL定时事件


4

我需要一种方法在经过一段时间后修改表中的值。我目前的方法如下:

  • 插入的结束时间为表等待周期
  • 当用户加载请求值的页面改变,请检查电流> =结束时间
  • 如果它是,更改值并删除结束时间字段,如果它不是,什么都不做

这将是网站上的一个主要功能,所以效率是关键;考虑到这一点,你可能会看到我如何做的问题。每当有人访问需要信息的页面时,就会调用相同的代码块。

任何有关改进或更好的方法的建议将不胜感激,最好在php或perl。

作为对cron工作答案的回应: 谢谢,我想尽可能地做这样的事情,但主持人限制是问题。由于这是应用程序的主要部分,因此不能受到限制。

  0

你在看什么样的时间跨度?几秒钟后更新会很容易,几个小时后更新,更加困难。 23 9月. 082008-09-23 19:20:33

  0

在共享主机上,这是关于你可以做的最好的。如果这是一个足够重要的应用程序,该方法的效率存在问题,则需要更好的主机。你可以得到一个负担得起的VPS,它会给你root权限,并且你可以随心所欲地运行cron。 23 9月. 082008-09-23 20:03:49

2

您可以使用cron作业定期检查数据库中的每个字段并更新该方式吗?

其中很大一部分是需要更新的频率。许多共享主机会限制cron检查的频率,例如不超过每15分钟一次,这可能会影响应用程序。


5

为什么不使用cron在幕后更新此信息?这样您可以卸载每个页面点击上的检查,并且实际上可以安排时间来满足应用程序的要求。


3

由于您无权访问cron,因此您的解决方案听起来非常符合逻辑。另一种方法可能是将值存储在文件中,下一次加载页面时检查它最后一次修改的时间(filemtime(“checkfile.txt”)),并确定是否需要再次修改。您应该测试两种方法的性能。

  0

听起来像个好主意;我会试一试。谢谢。 23 9月. 082008-09-23 23:15:23


0

如果性能真正开始成为一个问题,(这意味着很多比你更可能实现),你可以使用memchached来存储信息...


1

你可以使用某种类型的触发器每一页上加载。我真的不知道这将如何影响性能,但也许别人可以摆脱一些光。

  0

这就是我正在做的事情,不过谢谢。 23 9月. 082008-09-23 23:14:49