Javascript 即使用户不是';不在页面上

Javascript 即使用户不是';不在页面上,javascript,php,mysql,timer,Javascript,Php,Mysql,Timer,目前,我有一个简单的注册和登录PHP系统, 我想实现一个小计时器,用户可以为他们的个人使用设置,我想知道他们是否可以输入12小时,然后计时器会倒计时,直到计时器用完,他们可以再次启动,我想计时器可以继续运行,即使他们没有加载页面,所以我认为它需要存储在mySQL数据库中,我只是有很大的困难,我希望我没有要求太多 提前感谢您的时间。以下操作可能会起作用,但需要具有crontab的系统(可以在windows中使用任务调度器,但语法会有所不同) 创建一个表: UserTimers ----------

目前,我有一个简单的注册和登录PHP系统, 我想实现一个小计时器,用户可以为他们的个人使用设置,我想知道他们是否可以输入12小时,然后计时器会倒计时,直到计时器用完,他们可以再次启动,我想计时器可以继续运行,即使他们没有加载页面,所以我认为它需要存储在mySQL数据库中,我只是有很大的困难,我希望我没有要求太多


提前感谢您的时间。

以下操作可能会起作用,但需要具有crontab的系统(可以在windows中使用任务调度器,但语法会有所不同)

创建一个表:

UserTimers
----------
user_id | timer_id | trigger_time
当用户创建计时器时,将其添加到此表中

创建一个可执行的PHP脚本(假设它存储在
/etc/cronmgr

这将每2分钟运行一次cronmgr脚本(如果您认为服务器负载过大,请进行调整)


但是,用户的计时器可能会关闭X分钟(其中X是时间间隔,在本例中为2),因此,如果用户请求1分钟的计时器,则该计时器将无法正常工作。

PHP仅在发出请求时执行。但是你可以通过这样做来模拟它仍然在运行的事实:用户设置了一个12小时的计时器,好的,12小时后是什么时间?省省吧。下次用户回来时,显示到这个时间的剩余时间。您也可以使用本地存储进行此操作,并用@blex描述的相同方式模拟倒计时。或者只需设置激活时间(并存储在localStorage或Db中),然后在页面加载上获取激活时间和当前时间-进行数学运算以减去激活时间和当前时间之间的时间,并模拟倒计时。请注意,您不能为此使用会话存储。假设用户为12小时后设置计时器。然后用户注销,关闭计算机并进入睡眠状态。12小时后会发生什么?谢谢你的评论,我正在根据他们投入的时间计算结束时间,然后我希望它能在@apokryfos工作,在计时器结束时,它会触发一些事件,如电子邮件通知,并激活一个按钮,允许他们重新开始。@Josh您将无法使用PHP在特定时间发送电子邮件,除非有人提出要求。您需要使用另一种技术,或者这样做,或者每X分钟启动一次作业(作业是一个脚本,用于检查某些计时器是否已结束,并且需要发送电子邮件)
#!/usr/bin/php
<?php
$rows = mysqli_query("SELECT * FROM UserTimers WHERE trigger_time <= NOW()"); // Timer should have been triggered by now
//Get all rows and do whatever you need to do with them
mysqli_query("DELETE FROM UserTimers WHERE trigger_time <= NOW()");
*/2 * * * * /etc/cronmgr