我目前需要帮助同志。我正在基于php进行应用程序开发,应用程序是quesionaire系统,当用户已经启动时系统有倒计时器60分钟(点击开始按钮)。 到目前为止,当用户进入会话登录时,我可以将计时器推送到数据库,我每秒更新一次数据库。并且当前系统是用户注销时倒数计时器将停止,示例用户在30分钟倒计时时注销。因此,当用户登录时仍然需要30分钟。
但是我的客户不喜欢它。我的客户想要用户已经点击开始按钮,所以倒数计时器将持续到60分钟,即使用户在60分钟之前没有注销或用户关闭浏览器直到60分钟。
所以我的问题是如何实现的?当用户点击按钮启动时我必须做什么? 我想当用户单击按钮启动时将倒计时器推送到数据库mysql,用户关闭浏览器倒计时总是推送到数据库。
结构数据库表是:
- id (int) auto_increment;
- user_id (int);
- residual_time (int); <--I push it per second, so per second will update it until 0.
我的服务器使用linux ubuntu服务器。我是服务器的所有者。
谢谢。
答案 0 :(得分:0)
我会完全按照@Joachim的建议行事,并遵循以下流程:
residual_time
替换为start_time
,类型为日期时间。last_update
。start_time
MySQL功能设置last_update
和NOW()
last_update
是否在start_time
后60分钟,如果是,则停止调查问卷并同时清除start_time
和last_update
。现在让我们假设一个用户退出并在分配中途退出,然后重新登录以继续:
//sudo code example
//check if start_time is set
if(isset(start_time)){
//check if last_update time is set
if(isset(last_update)){
//calculate the time difference in minutes from previous start_time and last_update time
time_diff = last_update - start_time;
//if time difference is less than alloted time example 60 minutes
if(time_diff < 60 minutes){
//update start_time with current time less time difference for already used time
start_time = NOW() - time_diff minutes
//if time difference is greater than the allotted time
} else {
//kill the page with the time expired message
die(Your time has expired);
}
//if last_update time is not set
} else {
//set start_time to NOW()
start_time = NOW();
}
//if start_time is not set
} else {
//set start_time to NOW()
start_time = NOW();
}