【发布时间】:2010-04-26 09:05:48
【问题描述】:
我想根据周显示来自数据库的 1 条随机记录。
我需要判断是否是新的,如果是新的一周,则选择记录并显示新记录。
我想我可以只使用一周中的一天来生成新记录,无论哪种方式都可以。
当有人在同一天再次访问或刷新页面时,我真的很难概念化我将如何存储记录 ID 而不是选择新记录 ID。
有什么想法吗?如果我不够清楚,请告诉我。
另外,我无法访问 cron 作业,因为它是共享主机。
【问题讨论】:
我想根据周显示来自数据库的 1 条随机记录。
我需要判断是否是新的,如果是新的一周,则选择记录并显示新记录。
我想我可以只使用一周中的一天来生成新记录,无论哪种方式都可以。
当有人在同一天再次访问或刷新页面时,我真的很难概念化我将如何存储记录 ID 而不是选择新记录 ID。
有什么想法吗?如果我不够清楚,请告诉我。
另外,我无法访问 cron 作业,因为它是共享主机。
【问题讨论】:
创建一个表格,其中包含您要显示的行的 ID 和一个日期时间/时间戳列,该列说明该行的插入时间。然后你所要做的就是更新 id 如果它被插入超过一周。不幸的是,您必须对每个请求进行此检查。如果您不希望这样,您可以创建一个每周运行一次并更新表的 cron-job。
【讨论】:
让脚本从您的数据库中选择随机记录,然后将记录的内容放入数据库的空间中。然后让脚本显示记录的点到数据库上的位置。这样选择脚本只会作为 cron 作业运行一次。
基本上,脚本 A 会提取已记录的文件并将新选择的文件替换为旧文件,然后脚本 B 指向该表条目。如果您无法创建表格和条目,只需将脚本 A 记录的 Id 保存在文本文件中,然后将该 Id 读入正在显示它的脚本中。
【讨论】:
MySQL 的函数RAND() 接受一个整数参数N,用作种子值。这允许在多个请求中获得相同的序列 - 您可以查看 http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand 中的示例。我会尝试使用SELECT field_1, field_2, field_3 FROM table_name ORDER BY RAND($time) ASC LIMIT 1 之类的东西,其中$time 将是本周初的UNIX 时间戳。
【讨论】: