0

好的,这是我的问题;我目前有一个(有点)工作网页,它使用我的世界查询来检查我的世界服务器和 PHP 的 Teamspeak 框架来检查我的teamspeak 服务器。

现在的问题是检查这些东西需要很长时间,并且网站会暂停加载,直到服务器在线或离线。

有没有办法先加载网站,然后检查服务器是否启动?还有什么方法可以不时重新加载此页面,而无需重新加载页面的其余部分。

我想你可以用 JavaScript 做到这一点,但由于我从未使用过它,我不知道。

注意:我不发布代码的原因是其中有一些有意义的信息,我不知道是否需要它。如果是,请告诉我。

4

3 回答 3

1

我也会使用 JavaScript 和 XHR 或 WebSockets。但以防万一这对您来说是太大的一步,您也可以尝试以块的形式提供您的结果(使用Transfer-Encoding: chunkedHTTP 标头)。

然后,您可以一个接一个地输出您的服务器列表,并且每个数据块都将在可用时由浏览器显示。为此,您需要首先禁用任何类型的输出缓冲 ( while(ob_get_level() > 0) ob_end_clean();),使用 PHP 的header函数显式设置标头,并flush()在每个块之后使用。理想情况下,您的 HTML 应该以某种方式排列,以便在此之前输出所有其他信息(除了服务器状态)。

另外,请注意,并非所有浏览器在使用新块更新 DOM 时都有相同的间隔,只要 HTML 文档“未完成”,您就完全依赖浏览器的标签汤解析。话虽如此,这是一种避免编写脚本来实现目标的便捷方式。

<iframe>或者,您也可以尝试使用或<object>标记将状态部分嵌入到静态页面中。

于 2013-09-17T18:43:27.760 回答
1

对 PHP 脚本(在您的服务器上)进行 AJAX 调用,然后查询和检查服务器的状态并将结果发送回客户端。这将导致每次加载页面时都会调用脚本,并可能导致资源使用量过大。

或者,您可以定期检查(使用cronjob或类似的)服务器的状态并将它们存储在数据库中并在请求时显示它们。

于 2013-09-17T18:25:40.437 回答
1

这种模式通常使用 javascript。通常,您会让 javascript 向服务器上的另一个页面发出请求,以仅取回该数据(通常以 json 形式)。查看 ajax 以了解它是如何完成的,但最好使用 js 库为您完成工作 - jquery 很常见。根据您需要做什么,您可能会发现一个有用的框架——AngularJS 是我选择的毒药。

于 2013-09-17T18:26:38.783 回答