【问题标题】:Timed events with php/MySQL使用 php/MySQL 的定时事件
【发布时间】:2023-04-05 13:05:02
【问题描述】:

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

  • 在表中插入等待期的结束时间
  • 当用户加载页面请求更改值时,检查当前 >= 结束时间
  • 如果是,则更改值并删除结束时间字段,如果不是,则不执行任何操作

这将成为网站的主要功能,因此效率是关键;考虑到这一点,您可能会看到我如何做的问题。每次有人访问需要信息的页面时,都会调用相同的代码块。

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

针对 cron 作业的回答: 谢谢,如果可能的话,我想做类似的事情,但是主机限制是问题所在。由于这是应用程序的主要部分,因此不能受到限制。

【问题讨论】:

  • 你在看什么样的时间跨度?几秒钟后更新会很容易,几小时后更新会更困难。
  • 在共享主机上,这是您能做的最好的事情。如果这是一个足够大的应用程序,这种方法的效率存在问题,那么您需要一个更好的主机。您可以获得负担得起的 VPS,它可以让您获得 root 访问权限,并且您可以随意频繁地在其上运行 cron。

标签: php sql mysql events timing


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        如果性能真的开始成为问题,(这意味着比您可能意识到的要多得多)您可以使用 memchached 来存储信息...

        【讨论】:

          【解决方案5】:

          您可以在每次页面加载时使用某种触发器。我真的不知道这会如何影响性能,但也许其他人可以提供一些启示。

          【讨论】:

            猜你喜欢
            • 2016-10-20
            • 2018-01-16
            • 1970-01-01
            • 2013-03-12
            • 2018-01-13
            • 1970-01-01
            • 2016-08-09
            • 1970-01-01
            相关资源
            最近更新 更多