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