PHP 类商品秒杀计时实现代码
程序员文章站
2022-05-14 12:04:36
要求要有小时分钟秒的实时倒计时的显示,用户端修改日期时间不会影响到倒计时的正常显示(也就是以服务器时间为准)。 其实这和很多的考试等系统的时间限制功能同样的要求。 总不能用...
要求要有小时分钟秒的实时倒计时的显示,用户端修改日期时间不会影响到倒计时的正常显示(也就是以服务器时间为准)。
其实这和很多的考试等系统的时间限制功能同样的要求。
总不能用ajax每秒都获取服务器时间吧,所以实时倒计时一定要用javascript实现。这很简单,网上一大把的例子。
现在问题是解决用户端修改日期时间对我们的显示的影响。
解决的办法是计算出用户端的时间和服务器的时间差,这样问题的完成解决了。
这样只需要运行一次php,实时倒计时的时间就和服务器的时间同步了。
理论是同步的,但实际测试会有1秒的误差。(具体原因就是和网速有关,网速越快,误差就越小),但这决不会影响到我们上面的要求了。
注:秒杀时间从早上点到晚上10点。
code 如下:
<?php
//php的时间是以秒算。js的时间以毫秒算
date_default_timezone_set('prc');
//date_default_timezone_set("asia/hong_kong");//地区
//配置每天的活动时间段
$starttimestr = "08:00:00";
$endtimestr = "22:00:00";
$starttime = strtotime($starttimestr);
$endtime = strtotime($endtimestr);
$nowtime = time();
if ($nowtime<$starttime){
die("活动还没开始,活动时间是:{$starttimestr}至{$endtimestr}");
}
$lefttime = $endtime-$nowtime; //实际剩下的时间(秒)
?>
<script language="javascript">
<!-- //
var runtimes = 0;
function getrtime(){
var nms = <?=$lefttime?>*1000-runtimes*1000;
var nh=math.floor(nms/(1000*60*60))%24;
var nm=math.floor(nms/(1000*60)) % 60;
var ns=math.floor(nms/1000) % 60;
document.getelementbyid("remainh").innerhtml=nh;
document.getelementbyid("remainm").innerhtml=nm;
document.getelementbyid("remains").innerhtml=ns;
if(nms>5*59*1000&&nms<=5*60*1000)
{
alert("还有最后五分钟!");
}
runtimes++;
settimeout("getrtime()",1000);
}
window.onload=getrtime;
// -->
</script>
<h4><strong id="remainh">xx</strong>:<strong id="remainm">xx</strong>:<strong id="remains">xx</strong></h4>
其实这和很多的考试等系统的时间限制功能同样的要求。
总不能用ajax每秒都获取服务器时间吧,所以实时倒计时一定要用javascript实现。这很简单,网上一大把的例子。
现在问题是解决用户端修改日期时间对我们的显示的影响。
解决的办法是计算出用户端的时间和服务器的时间差,这样问题的完成解决了。
这样只需要运行一次php,实时倒计时的时间就和服务器的时间同步了。
理论是同步的,但实际测试会有1秒的误差。(具体原因就是和网速有关,网速越快,误差就越小),但这决不会影响到我们上面的要求了。
注:秒杀时间从早上点到晚上10点。
code 如下:
复制代码 代码如下:
<?php
//php的时间是以秒算。js的时间以毫秒算
date_default_timezone_set('prc');
//date_default_timezone_set("asia/hong_kong");//地区
//配置每天的活动时间段
$starttimestr = "08:00:00";
$endtimestr = "22:00:00";
$starttime = strtotime($starttimestr);
$endtime = strtotime($endtimestr);
$nowtime = time();
if ($nowtime<$starttime){
die("活动还没开始,活动时间是:{$starttimestr}至{$endtimestr}");
}
$lefttime = $endtime-$nowtime; //实际剩下的时间(秒)
?>
<script language="javascript">
<!-- //
var runtimes = 0;
function getrtime(){
var nms = <?=$lefttime?>*1000-runtimes*1000;
var nh=math.floor(nms/(1000*60*60))%24;
var nm=math.floor(nms/(1000*60)) % 60;
var ns=math.floor(nms/1000) % 60;
document.getelementbyid("remainh").innerhtml=nh;
document.getelementbyid("remainm").innerhtml=nm;
document.getelementbyid("remains").innerhtml=ns;
if(nms>5*59*1000&&nms<=5*60*1000)
{
alert("还有最后五分钟!");
}
runtimes++;
settimeout("getrtime()",1000);
}
window.onload=getrtime;
// -->
</script>
<h4><strong id="remainh">xx</strong>:<strong id="remainm">xx</strong>:<strong id="remains">xx</strong></h4>
上一篇: 揭秘:南北朝对立取决于北*权吗?
下一篇: cache_lite试用