我想查看几台服务器的状态,并在页面上显示它们是否已启动或关闭。目前,我正在使用PHP的fsockopen()
函数执行此操作。作为此功能的一部分,您可以确定超时时间。这意味着如果服务器关闭,它会在继续之前阻塞2秒钟。这导致我的网页在显示页面之前等待fsockopen()
完成。
有没有办法让这些fsockopen()
函数与页面呈现分开运行,并在确定后将结果包含在内?我想,它不一定是PHP。
答案 0 :(得分:1)
将此分为两个子问题:
1)创建一个cron作业(或以其他方式安排)一个脚本,该脚本将检查服务器状态并将该结果保存在某处(db,cache,file,post-it等)。根据需要随时运行它。
2)在渲染页面或通过AJAX调用时查询结果。
答案 1 :(得分:0)
使用AJAX。我建议使用jQuery的$ .ajax函数(http://api.jquery.com/jQuery.ajax/)来调用将查询服务器的PHP脚本。您将为ajax调用提供成功函数,该函数将在ajax调用完成时执行。
答案 2 :(得分:0)
创建一个接受变量的php页面,以了解要检查的服务器
<?php
$server = isset($_GET['server']) ? $_GET['server'] : '';
$upordown = 'invalid server'; //default incase wrong variable is set
switch ($server) {
case 'server1':
//check server 1; EG: $upordown = checkserver('http://www.example.com');
break;
case 'server2':
//check server 2;
break;
case 'server3':
//check server 3;
break;
}
echo $upordown
?>
然后使用jquery在您的展示页面上显示:
<html>
<head>
<script src='jquery.js'></script>
<script>
$(function(){
$('.serverstatus').each(function() {
var id = $(this).data('serverid');
$(this).load('/servercheck.php?server='+id);
});
});
</script>
</head>
<body>
<div class='serverstatus' data-serverid='server1'>loading</div>
<div class='serverstatus' data-serverid='server2'>loading</div>
<div class='serverstatus' data-serverid='server3'>loading</div>
</body>
</html>
现在你可以添加一些额外的安全性,比如缓存和随机服务器名,而不是1,2,3