0

I have a php sql script that generates 5 different values from a database everytime that it executes.
I want those values tot change lets say once a month and not everytime the script runs.

My code is:

$sql = "SELECT * FROM table ORDER BY RAND() LIMIT 5";
$query = mysql_query ($sql, $connection) or die (mysql_error()); 
while(($row = mysql_fetch_assoc ($query))){ 
    echo "<center>".$row['emri']." ".$row['mbiemri']."</center>";
}

Could anyone help me?

4

6 回答 6

2
rand(year(now())*100+month(now()))

每个月应该给你一个不同的随机数。rand 函数的参数rand(...)是种子。如果种子相同,则此值使返回的随机值是同一系列。我写它的方式使每个月的种子都是一样的。(例如本月 201305)

于 2013-05-23T11:03:46.823 回答
1
$sql = "SELECT * FROM table ORDER BY RAND(FLOOR(UNIX_TIMESTAMP()/2592000)) LIMIT 5";

说明:如果你给 rand 函数一个种子(整数参数),它会创建一个特定的序列(例如 RAND(3) 总是创建相同的序列)。上面的代码每 30 天给出一个不同的种子:

UNIX_TIMESTAMP():返回自 '1970-01-01 00:00:00' UTC 以来的秒数

2592000:30 天内的秒数

FLOOR:转换为整数

于 2013-05-23T10:53:38.463 回答
0

将当前日期存储在数据库中。每次运行脚本时,检查当前日期是否比上次存储日期晚 30 天并相应地执行。

于 2013-05-23T10:14:15.793 回答
0

使用 acronjob来安排脚本在每月的第一天 ( ) 选择随机数据0 0 1 * *,并将该数据插入单独的表中,或将其存储在内部缓存中。

此外,在大多数情况下,您应该array_rand在 PHP 端使用随机化,order by rand()这是一种不能完全保证永远工作的 hack(尽管它可能会因为它经常被滥用)。

于 2013-05-23T10:14:55.077 回答
0

脚本多久运行一次?

如果它仅在您想要更改值时运行,那么您需要设置一个每月运行一次的 cronjob。

于 2013-05-23T10:15:08.840 回答
0

您可以在服务器中创建一个 crontab 文件,以“在此日期的此时”执行脚本。请参阅此处的手册页。可能你的服务器也可以使用anacrontab

于 2013-05-23T10:17:41.043 回答