数据信息放在一个文件中,用php做实时网页,如果文件发生变动,就立马更新当前所在的网页,想知道用什么办法来实现比较好?之前的思路是js做轮询,每秒一次请求,如果一旦发现文件变化了,就重新加载,觉得这个不好

解决方案 »

  1.   

    这个需求要做到真正的“实时”,主要有两个地方:1 文件更新即时通知。
    2 服务器能即时将数据发送到客户端(浏览器)。首先,文件更新即时通知,这个你想的肯定是循环去扫描文件的最后更新时间,从这一步上你想的办法就无法做到实时。想做到实时,就要利用系统的时间驱动。比如linux 2.6内核的inotify。用c写个程序,跑个进程。当接收到这个通知后就去修改php的源代码。服务器推,其实就是在客户端与服务器的一次http交互中,服务器循环的给客户端response数据。这个网上说的大多比较笼统,我总结一下,其实也没那么复杂。1 需要修改web服务器的buffer。
    2 关闭web服务器会主动控制buffer的模块,如gzip。
    3 需要突破浏览器的buffer size,如让程序每次在response数据时填充一些空格另数据达到浏览器的buffer size。如ie是1024字节。在apache上很好实现,在nginx上有时比较奇怪,据我一些朋友反映他们无法成功,但我在本机nginx+chrome成功了。
    接下来你要考虑的就是,如何将这两点结合在一起。
      

  2.   

    用了ajax长连接,发现在保持连接的时候,如果再发起一次ajax请求的话,就会卡掉,要等到长连接响应后才会跟着响应。执行页面刷新,不是想要的结果。
      

  3.   

    可以这样实现,写个更新程序当前网页的程序,然后将其放在 linux中的计划任务中执行即可
      

  4.   

    如果页面和程序并不在同一台服务器,可采取推送的方式,就是说,在A服务器执行脚本程序生成最新页面,然后用shell脚本 将最新页面移动到B服务器