2012-03-18 114 views
0

目前我有一个非常基本的PHP脚本,用于从文本文件中随机绘制引号。带随机定时延迟的随机内容脚本

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

当然,每当页面加载时每次页面刷新时都会执行该脚本,并引发新内容。

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

如果它需要改变我的网站的wp-cron.php,有什么想法我需要在那里这样做?

谢谢

回答

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]); 

有几件事情,在这里可以改善(例如:错误处理,证明文件改变的可能性,使得缓存的引用无效等等),但基本思想应该是显而易见的。

+0

好的,谢谢我会试试这个 – GibsonFX 2012-03-19 23:31:16

+0

我试过这个脚本,但每次屏幕刷新时它都会改变。如果我不想将信息存储在某种数据库中,我想说我想要的是不可能实现的吗?如果是这样,你有什么线索可以在哪里找到关于如何做的一些信息?谢谢:) – GibsonFX 2012-04-04 12:29:01

+0

@LukeTetrabyte:适合我。如果它不适合你,唯一的解释是保存缓存文件失败。找出原因并加以解决。 – Jon 2012-04-04 12:52:00

0

你需要持久地存储一些变量,无论是在database,平面文件或其他地方。

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