|  在技术加营销的道路上越走越远
温馨提示
我是弹窗内容
当前位置:首页 > PHP经验积累 > PHP倒计时是怎么实现的?PHP活动过期功能应该怎么判断?
PHP倒计时是怎么实现的?PHP活动过期功能应该怎么判断?

PHP倒计时是怎么实现的?PHP活动过期功能应该怎么判断?

日期:2021-07-10 浏览量:1676 原创作者:湖八爷
今天知乎上有一个人邀请我回答一个有关于活动过期功能应该怎么实现的问题。这让我想起了我之前做过的活动倒计时的问题,所以就回答了一下,顺便记录到自己的博客中来。

活动过期功能,其实本质上是一个倒计时的问题。

所以我们可以直接把这个功能点看做成倒计时问题去处理,最简单的方式就是前端+后端分工解决。



一,倒计时功能实现的基本思路。

倒计时功能其实前端只需要在页面上做一个倒计时效果就行,就是一秒一秒跳动的那种效果,让用户可以直接看到还剩下多少时间这个活动就过期了。

后端其实是不需要做倒计时功能的,后端只需要在添加活动时记录两个时间字段到数据库表里面就行了。分别是“活动开始时间”和“活动结束时间”。



二,倒计时功能的具体实现案例。

1:要实现活动过期功能,第一步首先得把活动看做成一个对象,然后设计这个活动对象的数据库表,数据库表至少有活动ID字段,活动标题字段,活动规则字段,活动内容字段,活动状态字段,活动开始时间字段,活动结束时间字段,甚至还有活动主图字段等字段(根据实际需求建表即可)。


2:假设刚添加了一个活动到数据库中,这个活动的开始时间为中午12点,结束时间为14:00,那么当用户在12:00之前,假设早上11点整进入这个页面的时候,后端拿到“活动开始时间”-“现在的时间”,判断一下,如果大于0表示还没到活动开始的时间,这个时候前端页面倒计时哪里应该展示“该活动暂未开始”的提示,告知用户这个活动还没开始,请耐心等待。

具体代码如下图:


表示活动还没开始.png


如果小于等于0,表示已经在倒计时的时间范围了,这个时候再用“活动结束时间”-“现在的时间”,得到的时间就是前端要倒计时的时间,然后前端拿到参数值,开始倒计时。如果“活动结束时间”-“现在的时间”小于0,则表示活动已经过期了,这个时间进入前端页面,倒计时哪里应该展示“该活动已经结束”的提示,告知用户这个活动已经过期了。后端也应该去更新一下这个活动的活动状态字段为已结束。

具体代码如下图:


PHP倒计时功能的具体实现.png



三,总结一下PHP实现活动过期功能。

这个功能的实现其实不难,主要是思路的问题,我们采用前端+后端分工合作,前端做一个倒计时的效果,后端通过三个时间值,“活动开始时间”,“活动结束时间”,“用户访问的现在时间”,对这三个值做下判断即可得出用户是在活动开始前访问的页面,还是活动进行中访问的页面,还是活动结束后访问的页面。


$now_time = $_SERVER['REQUEST_TIME'];//获取当前请求时间的时间轴

$now_time = 1625799600;//假设现在的时间是2021年07月09日早上11点整,对应的Unix时间戳为1625799600

$now_time = 1625806800;//假设现在时间又来到了中午13点整,对应的Unix时间戳为1625806800


$activity_start_time = 1625803200;//活动开始时间,2021年07月09日中午12点整,对应的Unix时间戳为1625803200

$activity_end_time = 1625810400;//活动结束时间,2021年07月09日下午14点整,对应的Unix时间戳为1625810400


$activity_is_action = $activity_start_time - $now_time;
if($activity_is_action > 0) {
    echo "该活动暂未开始,请耐心等待";
} else {
    $count_down = $activity_end_time - $now_time;
    if($count_down < 0) {
        echo "该活动已经结束";
    } else {
        echo $count_down;//这个就是前端需要倒计时的时间,当成参数传给前端即可
    }
}


最后对于那些已经过期,但是活动状态字段还没更新的活动,应该写一个hook或者写一个定时器去更新这些活动的状态字段。