【问题标题】:How to display a dialog on an already open webpage whenever new data is available to be displayed?每当有新数据可供显示时,如何在已打开的网页上显示对话框?
【发布时间】:2017-08-10 05:51:24
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 欢迎来到 SO,请展示您的编码工作。
  • @Cyrus 好吧,我可以编写代码,我还没有开始编写代码,而且我不要求代码。我要问的是,请告诉我我正在尝试做的事情是如何完成的。我的意思是,就像在我的问题的倒数第二段中一样,我已经解释了我将如何解决我的 first 问题;就这样,请告诉我如何解决我的第二个问题?
  • Ajax、websocket、长轮询、服务器发送事件...
  • @frz3993 谢谢=)

标签: php mysql bash shell crontab


【解决方案1】:

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

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

然后脚本会返回是否有新记录,并且您可以使用 Javascript 向您的页面添加消息。您甚至可以根据需要返回数据,这样用户就不必重新加载页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 2010-11-08
    • 2021-02-01
    • 2012-07-20
    • 1970-01-01
    相关资源
    最近更新 更多