【发布时间】:2019-01-01 01:38:01
【问题描述】:
我正在为我的家庭自动化系统开发一个网页,该系统将控制我的花园洒水器。我已经有一个预定的计时器设置,现在我想添加一个倒数计时器(打开 x 分钟)。
我希望能够关闭网页,并让计时器在后台继续运行。当计时器结束时,我希望它在它达到零的那一刻做一些事情,即使没有打开网页。
考虑到这一点,我对网页的有限了解告诉我计时器应该在服务器上运行(在我的例子中是 RPi 上的 Appache2)。我已经尝试过this 基本示例,它在某些方面有效,但本身并没有止于零。
我稍作改动以显示此问题:
<?php
session_start();
if (!isset($_SESSION['countdown'])) {
$_SESSION['countdown'] = 10;
$_SESSION['time_started'] = time();
}
$now = time();
$timeSince = $now - $_SESSION['time_started'];
$remainingSeconds = ($_SESSION['countdown'] - $timeSince);
echo "Time remaining: $remainingSeconds seconds";
if ($remainingSeconds < 1) {
echo "DONE";
session_destroy();
}
?>
启动脚本,网页显示“剩余时间:10 秒”。完美的。 5 秒后刷新,显示“剩余时间:5 秒”。再次,完美。但是,如果我等待十秒钟并刷新,它会显示“剩余时间:-5 secondsDONE”。清楚地表明脚本仅在页面刷新时运行,这当然是有道理的。
所以我正在寻找的是一个倒数计时器:
- 在服务器上运行;
- 可以在达到零时触发事件;
- 可以从 javascript 或 jQuery 启动、暂停、停止和读取。
我不是在寻找任何特定语言的解决方案,只要它有效,我就很高兴。 PHP 示例只是我在研究我想要实现的选项时偶然发现的。
这样的事情可能吗?
【问题讨论】:
-
嗯,不是真的... PHP 预处理您的代码,并将其发送到浏览器 - 它不是 PHP 和浏览器之间的交互关系
-
也许我应该补充一点,我不是在寻找特定于 php 的解决方案。就像我说的,我对所有与网页相关的东西都很陌生,所以这只是我想到的第一件事。任何语言都适合我。
-
好的,将我评论中的“PHP”替换为“服务器端代码”
-
您可以将预定的日期/时间存储在数据库中,然后每分钟运行一个脚本(任何语言,可以是 PHP CLI)作为服务器上的 cron 作业,检查时间是否已过,触发所需的操作。您可以从 PHP 读取相同的数据库以显示浏览器中的剩余时间。
标签: javascript jquery html timer webpage