具有暂停功能的Php定时器

时间:2015-08-22 17:01:00

标签: php

我试图想出一种创建函数的方法,让用户能够通过单击按钮启动项目,并启动计时器。同时,我希望用户能够暂停以及停止计时器。完成任务后,他们就可以点击“完成”任务。将任务记录的总时间减去任何暂停时间记录到我可以记录的变量中。

我一直在研究并发现Javascript计时器不会非常可靠,这就是我想要使用Php的原因。我想我可以在'开始'和“停止”,但因为我需要暂停'同时,它在我的计划中抛出了一个新的纽带。

任何人都知道有一个很好的方法来实现这个目标吗?我知道一个时间戳到另一个时间戳会得到总时间,但如果进程暂停,你如何计算一个到另一个?

1 个答案:

答案 0 :(得分:0)

我不认为" Javascript计时器不会非常准确" 是一个准确的声明。

但是,如果您决定使用PHP,则不会在整个项目期间运行脚本。你需要的只是一个物体中的许多标记。您可以将对象存储在数据库表中,也可以将JSON字符串存储在文件中。以下是使用JSON的示例:

[
  [1440264185, "start"],
  [1440280217, "pause"],
  [1440288349, "resume"],
  [1440292161, "pause"],
  [1440317465, "resume"],
  [1440325597, "stop"]
]

对象是逐步构建的,每个事件都会添加信号类型(startpauseresumestop)收到的信号的时间戳。

然后,当你想计算在项目/任务上花费的时间时,你可以使用这样的代码:

$markers = json_decode($json_markers, true);
$num_markers = count($markers);
$markers[] = $markers[$num_markers-1];
$time_worked = 0;
for($i = 0; $i < $num_markers; $i++) {
  if(in_array($markers[$i][1], array("start","resume"))) {
    $time_worked += $markers[$i+1][0] - $markers[$i][0];
  }
}
var_dump($time_worked); // int(27976)

Here's the code above