从服务器端强制刷新客户端页面

5

如何从服务器端刷新当前客户端页面?例如,如果我想强制所有客户端立即刷新正在查看的页面,以便他们可以查看新内容。我想使用PHP在我想要的时间进行此操作。

这可能吗?


据我所知,在收到请求之前您无法发送response - Manoj Purohit
@legendinmaking 是正确的。你需要通过 JavaScript、JQuery 等发送请求到 PHP 页面以刷新它。一旦 PHP 渲染完成,它就完成了,无法自我刷新。 - Zak
不可能的。一旦页面已发送到浏览器,用户就需要请求进一步的页面等。 - Kevin Lynch
你可以使用 AJAX 和/或长轮询。 - Pitchinnate
3个回答

7
你可以通过以下两种方式实现这一行为:
WebSockets - 如果所有客户端都通过 WebSockets 连接,那么客户端和服务器之间就建立了一个直接的连接。你需要在时间上进行创意性处理,但是你可以随时发送一个需要刷新的命令。这需要你在 PHP 中实现 WebSockets,具体请参考http://socketo.me/ 和 JavaScript。
轮询 - 你可以设置客户端每 x 秒发送一个 AJAX 请求。服务器响应一个布尔值,AJAX 成功处理程序使用它来确定是否应该刷新页面。

3
使用Web Sockets。您可以使用PHP套接字,其中包括这个这个
我认为要使用PHP套接字需要PHP版本5.3或以上。
如果您没有PHP v5.3或以上的版本,则可以使用Node JSSocket.io 长轮询也是一种选择,但考虑到服务器将收到的请求数量,这不会是一个好的解决方案。此外,用户的带宽使用量会增加。

1
如果您想在特定时间间隔内刷新页面,请在<head>中加入以下内容:
<meta http-equiv="refresh" content="5">

将“5”更改为您喜欢的秒数。
如果您只想在事物发生变化时刷新,则需要在客户端使用一些Javascript - 例如,向URL发送Ajax请求,询问自页面加载以来是否有新数据,并在必要时刷新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接