簡體   English   中英

如何顯示每10秒更改一次的橫幅並尊重頁面刷新的時間?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM