这个想法非常简单:
如果计时器是用Javascript制作的,当它达到零时,它会在PHP中执行一个查询,改变数据库值以添加1。
问题在于,当您构建新设施时,不能使用页面刷新重置有问题的计时器,就像任何基于浏览器的游戏一样。
这是针对学校游戏项目,在其中单击“构建”并根据该工具的级别,需要X时间将其升级到新级别,显示一个计时器,告诉用户剩余多少时间升级完成。
如果解决方案在某处,我真的很抱歉,但我向上帝发誓我到处都搜索过,但我无法找到一个合适的方法来做到这一点。
答案 0 :(得分:0)
将上次更新的时间存储在数据库中,并每5分钟左右检查一次页面
答案 1 :(得分:0)
不要依赖前端脚本来执行此操作,而是在后端安排任务。 一些方法来做到这一点。 如果负载和用户较少,并且定时器值不是很高。 在你的脚本中放入Sleep(10)(10秒)并通过你的javascript调用它 10秒后执行查询:)。 即使浏览器已关闭或页面已刷新,它也能正常工作
Php脚本:
<?php
$timer = $_REQUEST['timer'];
$timer = intval($timer);
sleep($timer); // sleep for some seconds
....rest of the stuff..
?>
然而,对于大量使用和15分钟等大间隔,您可以立即在数据库中存储一些信息并触发时间,然后在后端使用cron(计划任务)处理它们
答案 2 :(得分:0)
这可能很棘手,因为你总会有延迟,所以这不准确。
但是你可以做的是让PHP在页面刷新时生成“剩余时间”值。这是自上次写入数据库以来的时间。页面加载时,您可以使用YourDelay - TimeSinceLastWrite的延迟初始化新计时器。之后,您启动常规计时器,只需将YourDelay作为间隔。
另一种选择,也可能更准确,是将请求的时间(AJAX,假设?)保存到cookie。页面加载时,您可以检查cookie并执行与上述相同的逻辑。只有它会更精确,因为你在同一台机器上完成所有时间,没有延迟或不同系统时钟的问题。