[英]How I can display a banner that changes every 10 seconds and respect the period while the page refreshes?
我正在開發一個基於js和php的廣告活動的構建器,該構建器使用javascript的setInterval函數每10秒顯示一條橫幅,但是當網站刷新時,setInterval會重新啟動。 如果您在不到10秒的時間內刷新頁面,它將始終顯示相同的橫幅。
有沒有辦法在服務器端維護setInterval函數,或者其他方法?
我正在嘗試用javascript將每一秒存儲在localStorage(HTML5)上,以在刷新頁面時在同一秒內繼續進行操作,但是我認為這不是做到這一點的方法。
我希望有人能幫助我克服這個困擾我的障礙。 :)
您需要將間隔計時器的狀態保存在服務器或客戶端上的某個位置。 本地存儲聽起來像一個選擇。 如果您使用的是HTTP發布,則其他選項可能是cookie,url參數或form參數。
您可以將計時器存儲在一個會話中,該會話僅每十秒鍾更新一次
<?php
if (!isset($_SESSION)) {
session_start();
}
$time = time();
echo $time.'<br>';
$interval = 10; // ten seconds
if(!isset($_SESSION['timer']) || $_SESSION['timer'] == '') { // if the timer has not been started
$_SESSION['timer'] = $time; // sets the timer to start now
echo 'start timer = '.$_SESSION['timer'].'<br>';
} else { // the timer has already been started
echo 'timer = '.$_SESSION['timer'].'<br>';
if(($_SESSION['timer'] + $interval) < $time) {
// get new banner
echo 'get new banner<br>';
$_SESSION['timer'] = $time; // start the timer again
} else {
echo 'not yet';
}
}
?>
嘗試運行此代碼並每秒刷新一次頁面……您將僅每十秒鍾看到一次“獲取新橫幅”。 否則,您將看到“尚未”。
您可以將代碼放在此處以獲取新橫幅`//獲取新橫幅'
讓我知道是否有幫助。
編碼愉快!
有沒有辦法在服務器端維護setInterval函數,或者其他方法?
您說您正在使用PHP,因此只需使用PHP會話來記錄上一個橫幅廣告的加載時間。 如果您接到另一個電話,並且會話時間小於10秒,則使用相同的橫幅,否則使用新的橫幅。
是的,您仍然需要JavaScript中的10秒計時器來觸發橫幅刷新,但是localStorage並不需要所有這些東西-聽起來您似乎在考慮一個非常簡單的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.