Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不进行持续刷新的情况下刷新页面_Javascript_Php - Fatal编程技术网

Javascript 在不进行持续刷新的情况下刷新页面

Javascript 在不进行持续刷新的情况下刷新页面,javascript,php,Javascript,Php,我目前正在为员工制作一个简单的时钟输入和输出系统。仓库里有一台电视,电视的右边是未登录人员的名单,左边是已登录人员的名单。当他们在楼下的扫描设备上打卡时,我需要楼上的电视/仪表板进行更新,并将他们的名字移到适当的一侧 我已经做了一个函数,将详细信息记录到数据库中。我知道我可以使用这样的代码: <meta http-equiv="refresh" content="3;url=thecurrentpagesurl" /> 这样做会刷新页面,

我目前正在为员工制作一个简单的时钟输入和输出系统。仓库里有一台电视,电视的右边是未登录人员的名单,左边是已登录人员的名单。当他们在楼下的扫描设备上打卡时,我需要楼上的电视/仪表板进行更新,并将他们的名字移到适当的一侧

我已经做了一个函数,将详细信息记录到数据库中。我知道我可以使用这样的代码:

<meta http-equiv="refresh" content="3;url=thecurrentpagesurl" />

这样做会刷新页面,运行一个检查更改并相应更新显示的功能,但是我想知道是否有一种方法可以“监听”更改,而不必经常向服务器发送垃圾邮件。理想情况下,我希望仪表板实时更新

使用meta refresh,我可以刷新页面,使用一个函数来检查数据库的更改,并相应地更新仪表板上的html。有没有一种资源密集程度较低或效率更高的方法

(我不是JavaScript专家,但我有足够的理解力在基本层面上使用一些)

编辑
这个问题以前问过,我也看过其他答案,这就是为什么我得出了关于元刷新方面的结论,但我想知道的是,根据我的具体设置,是否有更有效的方法来完成它。

我决定在设定的时间运行刷新,因此,我所做的是使用php日期函数来计算时间,如果时间介于7-9(最早的员工打卡)或5-7(最晚的任何人打卡)之间,它将运行元刷新,这样它不会全天检查,而每个人都在工作。再次感谢

在您描述的环境中,您当前的方法还不错

以下是一些想法/选项,如果需要,您可以阅读并改进您的应用程序:

  • 使用Ajax,只需刷新列表内容即可。您可以将其与整洁的动画相结合。但这仍然不是实时的。这在使用jQuery或类似库时尤其容易
  • 您可以将Ajax与longpolling一起使用,这意味着Ajax请求将在服务器端保持打开状态,直到发生任何更改(或可能的超时)。当一个请求得到响应时,只需使用longpolling打开另一个ajax请求并等待更多更改。这不是实时的,但它非常接近它。在某些环境中,这会给服务器带来压力,因为每个打开的请求都会占用资源或阻塞套接字/线程等
  • 另一个更现代的版本是使用WebSocket。这是最复杂的方法,但通信是实时的。浏览器视图和服务器正在建立tcp连接,并保持该连接打开,以便通过它进行通信。还有一些很好的WebSocket开源库

在您描述的情况下,我将使用您当前的解决方案,并考虑前两个想法。它们没有那么复杂,可以提供“实时”更新的感觉。

看看WebSocket或longpolling。AJAX或WebSocket是您的主要选择。但事实上,人们实际上多久打卡一次?人们需要以多快的速度得到通知(即,他们实际如何处理这些信息?如果他们不立即发现,这会是一个问题吗?)。我的意思是,你真的需要每3秒钟更新一次吗?也许每几分钟(甚至更少)就可以用于所有实际用途。如果是这样的话,您只需更改刷新命令的时间,“持续”刷新问题就会消失,而无需学习任何新概念或编写任何新代码。这取决于,这很简单而且有效,可能3秒有点短,将其设置为60秒。我不需要太担心服务器负载。对于将来阅读的任何人,我们也忘了在这里提及服务器发送事件(SSE),因为通信似乎只是单向的。