2012-03-18 58 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。否則,只需獲取當前的報價編號並顯示它。