Php setInterval会使客户端PC过载吗?

Php setInterval会使客户端PC过载吗?,php,javascript,jquery,sql,ajax,Php,Javascript,Jquery,Sql,Ajax,我有一个关于使用setInterval()的问题;在javascript中。我正在开发一个医院的(PHP/SQL,Ajax)数据库,现在每当执行pateints测试时,它都会在主屏幕上显示一条消息,说“(pateints Name)”的测试结果已更新”。我试着用php脚本来做,但无法直接从php脚本触发事件。现在我使用setInterval()来实现这个目的,它运行一个函数,每10秒检查一次pateints数据库,并在添加新测试时显示消息 setInterval(checkAndDispl

我有一个关于使用setInterval()的问题;在javascript中。我正在开发一个医院的(PHP/SQL,Ajax)数据库,现在每当执行pateints测试时,它都会在主屏幕上显示一条消息,说“(pateints Name)”的测试结果已更新”。我试着用php脚本来做,但无法直接从php脚本触发事件。现在我使用setInterval()来实现这个目的,它运行一个函数,每10秒检查一次pateints数据库,并在添加新测试时显示消息

   setInterval(checkAndDisplayNewResults(), 10000);

我的问题是“这是正确的方法吗?它不会使服务器或客户端PC过载吗?如果这不是正确的方法,那么还有什么选择?

这取决于函数的功能,但很可能不是10秒的间隔。不过,您可能应该这样编写:

setInterval(checkAndDisplayNewResults, 10000);

这取决于函数的功能,但如果间隔为10秒,则很可能不是。不过,您可能应该这样编写:

setInterval(checkAndDisplayNewResults, 10000);

是的,这是正确的方式,你别无选择,例如Gmail,使用相同的技术向你显示新邮件。

是的,这是正确的方式,你别无选择,例如Gmail,使用相同的技术向你显示新邮件。

我认为你会使服务器过载。特别是如果有大量连接来自不同地方的信息。使用Comet技术可能有助于:


我认为您会使服务器过载。特别是当有大量来自不同地方的连接时。使用Comet技术可能会有所帮助:


问题不在于
setInterval()
,因为它只是执行代码

问题在于:

  • HTTP请求

    在一台PC上每10秒轮询一次是可以的。但是如果你有多台PC轮询你的服务器,它会消耗你的带宽,并且会由于多个请求而增加服务器的开销。想象一下,每10秒有一整台PC轰炸你的服务器

  • 浏览器DOM

    此外,如果这是一个kiosk应用程序,您还应该担心加载到DOM中的项目数量。例如在机场“航班时刻表屏幕”中,您只需将越来越多的项目添加到列表中。如果不删除这些未使用的项目,它将消耗内存


  • 问题不在于
    setInterval()
    ,因为它只是执行代码

    问题在于:

  • HTTP请求

    在一台PC上每10秒轮询一次是可以的。但是如果你有多台PC轮询你的服务器,它会消耗你的带宽,并且会由于多个请求而增加服务器的开销。想象一下,每10秒有一整台PC轰炸你的服务器

  • 浏览器DOM

    此外,如果这是一个kiosk应用程序,您还应该担心加载到DOM中的项目数量。例如在机场“航班时刻表屏幕”中,您只需将越来越多的项目添加到列表中。如果不删除这些未使用的项目,它将消耗内存


  • 永远每10秒轮询一次服务器很少是获得更新的正确方法。这对客户端、服务器和网络来说都是极为低效的。您应该将轮询时间间隔缩短到更慢的时间间隔,或者实现更智能的服务器推送解决方案

    一种更有效的解决方案是由长时间运行的服务器请求组成,这些请求将在服务器提供数据后立即返回数据


    HTML5还指定了一个接口,允许客户端和服务器之间只打开一个套接字,并根据需要自由发送数据。

    永远每10秒轮询一次服务器很少是获得更新的正确方式。这对客户端和服务器以及网络来说都是极为低效的。您应该将轮询间隔返回到一个慢得多的时间间隔,或者实现一些更智能的方法,比如服务器推送解决方案

    一种更有效的解决方案是由长时间运行的服务器请求组成,这些请求将在服务器提供数据后立即返回数据


    HTML5还指定了一个接口,允许客户端和服务器之间只打开一个套接字,并根据需要自由发送数据。

    如果使用setInterval,请确保只设置一次间隔。否则,可能会得到多个实例


    您可以搜索WebSocket并查看这是否是您的解决方案,如果使用setInterval,请确保仅设置一次间隔。否则可能会得到多个实例


    您可以搜索WebSocket,看看这是否是您的解决方案

    服务器应该每10秒处理一个请求,没有问题,我认为这是不言自明的

    客户端也不会有任何问题,只要确保像Joseph所说的那样去掉DOM元素,否则RAM就会慢慢填满

    这一切都归结为你有多少个客户端。请注意,一个Web服务器可以处理相当多的请求,所以不要害怕使用它。但是你没有提到有多少个客户端

    如果有很多客户端,我唯一想到的就是数据库,那么这个查询有多重?应该缓存结果吗?可能每5-10秒一次


    如果使用AJAX是实现这一点的最简单的方法,那么我会说:去做吧:)

    服务器应该每10秒处理一个请求,没有问题,我认为这是不言自明的

    客户端也不会有任何问题,只要确保像Joseph所说的那样去掉DOM元素,否则RAM就会慢慢填满

    这一切归结于你有多少个客户端。请注意,Web服务器可以处理相当多的请求,所以不要害怕使用它。但是你没有提到