每当有新数据可供显示时,如何在已打开的网页上显示对话框?

How to display a dialog on an already open webpage whenever new data is available to be displayed?

我需要在后台定期发生两件事:

  1. 我需要每5分钟检查一次服务器上的目录中是否有新文件,如果有,我需要从那个文件中加载数据到数据库中,然后删除目录中的文件。

  2. 每次我将新数据加载到数据库中时,我都需要检查显示数据库中数据的网页是否在用户的浏览器中打开。如果它是打开的,我想显示一个对话框告诉用户重新加载网页,因为数据库中添加了新数据。

对于 1,我认为我应该创建一个 cron 作业来每 5 分钟执行一个 PHP 脚本。在这个 PHP 脚本中,我将检查目录中是否有文件,如果有,我将从该文件中加载数据到数据库中,然后删除该文件。

但我对2感到困惑。我应该怎么做?我将如何通知已经打开网页的用户,新数据可用,他们应该重新加载网页,以便从数据库中提取新数据并显示。

你对第一点的解决方案对我来说似乎合乎逻辑。您的第二点可以通过定期 ajax 请求来处理。您使用 Javascript 在服务器上调用一个页面以查看是否有任何新数据已添加到数据库中。

我认为这样做的一个好方法是向用户的会话添加一个变量,该变量保留最后一次检查完成的时间戳。当您使用 AJAX 调用脚本时,它会检查数据库是否从那时起创建了任何新记录,并使用当前时间戳更新变量。

脚本然后 return 判断是否有新记录,并且 Javascript 您可以向页面添加消息。如果需要,您甚至可以 return 数据,这样用户就不必重新加载页面。