好的,这是我的问题;我目前有一个(有点)工作网页,它使用一个minecraft查询检查一个minecraft服务器和PHP的Teamspeak框架来检查我的teampeak服务器。
现在的问题是,检查这些内容需要很长时间,如果服务器在线或离线,网站会暂停加载。
有没有办法首先加载网站,然后检查服务器是否已启动? 还有什么方法可以在不重新加载页面其余部分的情况下重新加载一次。
我想你可以用JavaScript做到这一点,但因为我从来没有用过它,我不知道。
注意: 我没有发布代码的原因是因为它有一些感知信息,我不知道是否需要它。如果是,请告诉我。
答案 0 :(得分:1)
对PHP脚本(位于您的服务器上)进行AJAX调用,然后查询并检查服务器的状态并将结果发送回客户端。这将导致每次加载页面时都会调用脚本,这可能会导致大量资源的使用。
或者,您可以定期检查(使用cronjob或类似的)服务器的状态,并将它们存储在数据库中,并在请求时显示它们。
答案 1 :(得分:1)
这种模式使用javascript很常见。通常,您可以让javascript向服务器上的另一个页面发出请求以获取该数据(通常采用json格式)。查看ajax以了解它是如何完成的,但最好使用js库为您完成工作 - jquery非常常见。根据您的需要,您可能会发现一个有用的框架 - AngularJS是我的首选毒药。
答案 2 :(得分:1)
我也会使用JavaScript和XHR或WebSockets。但是,如果这对你来说太大了,你也可以尝试以块为单位提供结果(使用Transfer-Encoding: chunked
HTTP标头)。
然后,您可以逐个输出服务器列表,浏览器会在可用时显示每个数据块。为此,您需要首先禁用任何类型的输出缓冲(while(ob_get_level() > 0) ob_end_clean();
),使用PHP的header
函数显式设置标头,并在每个块之后使用flush()
。理想情况下,您的HTML应该以某种方式排列,以便在此之前输出所有其他信息(除了服务器状态)。
另外,请注意,在使用新块更新DOM时,并非所有浏览器都具有相同的间隔,并且只要HTML文档“未完成”,您就完全依赖于浏览器的标记解析。话虽如此,这是避免编写脚本以实现目标的便捷方式。
或者,您也可以尝试使用<iframe>
或<object>
标记将状态部分嵌入静态页面。