具有随机时间延迟的随机内容脚本

时间:2012-03-18 23:55:38

标签: php cron

目前我有一个非常基本的PHP脚本,用于从文本文件中随机绘制引号。

<?php include('testimonials.txt');
  srand ((double) microtime() * 100000);
  $random_number = rand(0,count($quotes)-1);
  echo ($quotes[$random_number]);
?>

当然,目前每次页面加载时都会执行脚本,并在每次刷新页面时显示新内容。

我想知道有没有简单的方法来修改它来更改计时器上的内容,所以它每天只更改一次,或者每隔几天更改一次?

如果需要更改我网站的wp-cron.php,知道我需要在那里做什么吗?

谢谢

2 个答案:

答案 0 :(得分:2)

您可以从基本内容开始,这样可以保存报价的ID以及在文件中选择的时间:

<?php
$cachefile = './current_t_id';
$time = $id = null; // assume we have no cached quote
$change_every = 3600; // seconds
include('testimonials.txt');

// if cached quote exists, load it
if(is_file($cachefile)) {
    list($time, $id) = explode(' ', file_get_contents($cachefile));
}

// if no cached quote or duration expired, change it
if(!$time || time() - $time > $change_every) {
    srand ((double) microtime() * 100000);
    $id = rand(0,count($quotes)-1);
    file_put_contents($cachefile, time().' '.$id); // update cache
}

// echo the quote, be it cached or freshly picked 
echo ($quotes[$id]);

这里有几件事可以改进(例如错误处理,推荐文件以使缓存的报价无效的方式改变的可能性等),但基本的想法应该是显而易见的。

答案 1 :(得分:0)

您需要在database,平面文件或其他位置持久存储一些变量。

例如,您可以存储报价上次更新的时间以及当前报价ID。加载页面时,检查时间差是否大于某个时间量(例如1天,2天等)以及是否生成新的报价ID。否则,只需获取当前报价ID并显示它。