php - 如何用 PHP 制作秒表?
问题描述
我希望定时器在服务器上的特定时间被激活,如果页面重新加载,按照它停止的定时器,而不是重新启动,同样如果你关闭浏览器,让定时器继续?我不知道该怎么做,或者有可能吗?有任何想法吗?我太感谢你了。
解决方案
您可以将信息保存在会话中(如果用户随后清除了他们的 cookie,秒表将丢失):
session_start();
if (array_key_exists('stopwatch', $_SESSION)) {
$stopwatch = $_SESSION['stopwatch'];
} else {
$stopwatch = time();
$_SESSION['stopwatch'] = $stopwatch;
}
$elapsed = time() - $stopwatch;
print "Elapsed time: " . date('H:i:s', $elapsed);
如果不在会话中,则在数据库中(那时您需要登录,因为每个用户都需要自己的秒表)。
如果您想在页面保持打开状态时对其进行计时,则需要 AJAX 和一个更新服务器端会话或基于数据库的秒表的 Javascript 计时器。然后您将有两次,总时间(秒表在三个小时前开始)和屏幕时间(浏览器显示秒表 1 小时 17 分这 3 小时)。
要清除会话秒表,只需删除变量:
unset($_SESSION['stopwatch']);
至于用户离开后“计时器将继续”,只要您不需要在服务器上发生任何事情(例如在秒表达到八小时时做某事),这类工作就可以完成。为此,您需要对服务器进行更高程度的控制,并且可能需要所谓的“cron 作业”来在那里或您控制的外部服务器上运行。
如上所述,您可以在知道已经过去多少时间的情况下恢复秒表 -就像秒表一直持续运行一样。
推荐阅读
- odata - SAPUI5 表 - 从 ODATA 加载值时根据某些状态禁用整行
- r - 如何在R中组合for循环的结果并一次打印?
- spring-boot - 在客户端应用程序中使用中央 Spring Cloud 配置服务器从 GitHub 存储库读取配置
- java - 索引 0 超出长度 0 数组 3D 的范围
- apache-spark - SPARK 持久化示例
- python - 如何使用 Python 在 Huffman 树中查找父节点的值
- python - 读取一系列标题和输入值(其中 1 <= value <= 30)的程序,如下所示,提示存储在两个列表中
- ios - Podfile.lock 版本和 pod [podfile] --版本号不同
- html - 在 Angular 中使用项目数组
- c# - 我正在使用 while 循环在 C# 中反转一个字符串我得到正确的输出但是我使用 for 循环的相同逻辑然后输出是错误的