用户偏好的MySQL和预定更新?

时间:2011-10-18 05:31:39

标签: mysql sql algorithm perl scheduling

我正在开发一个

的应用程序
  • 在表格中存储(给用户)电子邮件地址。
  • 存储用户希望留在桌面中的天数。
  • 当天数达到时,
  • 将用户从桌面上移开。

我真的不知道如何处理这个,所以这是我的问题:

  1. 每一秒,我是否通过每个表格条目检查当前存储的时间,比如time_left列?
  2. 如果我期待大量(10,000+)用户,那么(1)会不会效率低下?
  3. 如果不是(2),那么为这样的任务实施的最佳算法是什么?
  4. 我在这里要做的是什么名字?在编写脚本之前和之后,我想对它进行更多的研究,所以我需要一个很好的搜索查询。
  5. 我计划在Perl中编写这个脚本,虽然我对语言选择,框架等方面的建议持开放态度......我实际上是Web开发的新手(在后端和前端都是如此) ),如果你能准确地告诉我,我会很感激的。

    谢谢!

    *发布后,Topener提出了一个有效的问题:

      

    如果不会要求用户,为什么要存储用户?

    假设用户只是坐在数据库中。

    假设我从用户添加到数据库后每隔5分钟使用用户的电子邮件地址(因此,如果用户的条目在2月18日下午2点生成,则用户将被访问2:05,2:10等......)

    如果用户在10天内决定他们想要退出数据库,则意味着他们的正常访问(从10月18日下午2点到5点每分钟)到10月28日下午2点。

    所以要澄清一下,基于这种情况:

    系统必须不断地将当前时间与用户的到期日期进行比较,不是吗?

3 个答案:

答案 0 :(得分:2)

你不应该存储time_left变量,你应该存储vaildTo。这样,无论何时从数据库请求用户,您都可以检查它是否有效。

如果没有,那就做任何你想做的事。

这种方法不会让你制作任何cronjobs,或者会花费你额外的费用。

答案 1 :(得分:1)

嘿Mr_spock我喜欢Topener的上述答案。用户希望将有效天数存储起来,而不是存储用户希望被删除的天数。

添加像validToDate这样的字段(可以是DATETIME字段类型),您可以执行类似

的查询

从tablename中删除validToDate< = NOW()

其中

  • 斜体文本是SQL查询
  • tablename是有问题的表的名称
  • NOW()是一个有效的sql函数,它返回当前的DATETIME
  • validToDate是DATETIME
  • 类型的字段

这具有SQL服务器所承诺的效率,我认为它相当不错。

答案 2 :(得分:0)

您可以编写一个单独的程序/脚本,在设定的时间间隔内进行删除查询。如果您使用的是Linux计算机,则可以创建一个cron作业。对于速度较慢的计算机和较大的表,每秒执行此操作可能会变得非常耗费资源,但我认为这不会成为简单删除查询的问题。