PHP-如果所有数组都处于活动、非活动或不可用状态,则显示消息
我想添加一条整体消息,该消息会根据在线服务器的不同而变化。与此类似,它有一个总的绿色div,告诉访问者一切都已启动并运行,但如果其中一台服务器停机,它将变为橙色,如果所有服务器停机,它将变为红色。收集阵列中的服务器状态,然后检查是否PHP-如果所有数组都处于活动、非活动或不可用状态,则显示消息,php,arrays,server,status,Php,Arrays,Server,Status,我想添加一条整体消息,该消息会根据在线服务器的不同而变化。与此类似,它有一个总的绿色div,告诉访问者一切都已启动并运行,但如果其中一台服务器停机,它将变为橙色,如果所有服务器停机,它将变为红色。收集阵列中的服务器状态,然后检查是否 在您的情况下,我更喜欢另一种方法,然后直接询问页面。在您的位置上,我将构建一个cronjob,它每分钟检查您的服务,并将状态保存在数据库或其他东西中。然后你可以用这些数据建立一个图表 但对于你的情况。为了实现这一点,我更愿意在服务器上运行一个循环,然后将每个失败的声
在您的情况下,我更喜欢另一种方法,然后直接询问页面。在您的位置上,我将构建一个cronjob,它每分钟检查您的服务,并将状态保存在数据库或其他东西中。然后你可以用这些数据建立一个图表
但对于你的情况。为了实现这一点,我更愿意在服务器上运行一个循环,然后将每个失败的声明保存在一个数组中。之后,您可以使用该数组。所以数组中有一个条目是橙色的。如果有多个条目,则为红色状态。或者更容易使用计数器变量
<?php
$status = array();
foreach($server as $host => $port){
$status[] = servercheck($host,$port);
}
if (in_array('0', $status)) {
echo $offline;
} else {
echo $online;
}
您的完整代码:
$errors = 0;
foreach($server as $host => $port) {
if(servercheck($host, $port) == 0) {
$errors++;
}
}
if ($errors == 0) {
echo "green!";
} elseif ($errors == 1) {
echo "orange!";
} else {
echo "red!";
}
有人这样想。我不知道它是否正确,但你可以测试一下 我想你的意思是如果(servercheck($host,$port)==0)
哦,对不起,是的…)我已经改变了。不客气,用setInterval
代替cron怎么样?@hassan你可以这样做,但是当你没有一些信息时,你就不能构建图表和处理数据了。所以我会将这些信息存储在一个地方,然后处理这些数据,这样你就有了更多的可能性。@Stony你能把你的新代码放在我的旧代码中吗?因为我不确定把你给出的代码放在哪里(我是PHP新手)
$errors = 0;
foreach($server as $host => $port) {
if(servercheck($host, $port) == 0) {
$errors++;
}
}
if ($errors == 0) {
echo "green!";
} elseif ($errors == 1) {
echo "orange!";
} else {
echo "red!";
}
<?php
//Page Variables
$online = '<td style="background-color:#00FF00; padding:5px;">Operational</td>';
$offline = '<td style="background-color:#FF0000; padding:5px;">Failed</td>';
//Functions
function servercheck($server, $port) {
//Check that the port value is not empty
if (empty($port)) {
$port = 80;
}
//Check that the server value is not empty
if (empty($server)) {
$server = 'domain.com';
}
//Connection
$fp = @fsockopen($server, $port, $errno, $errstr, 1);
//Check if connection is present
if ($fp) {
//Return Alive
return 1;
} else {
//Return Dead
return 0;
}
//Close Connection
fclose($fp);
}
//Ports and Services to check
$services = [
'Website Access' => ['domain.com' => 80],
'Another Service' => ['domain.com' => 443],
'Another Service' => ['domain.com' => 21],
];
$errors = 0;
foreach($services as $host => $port) {
if(servercheck($host, $port) == 0) {
$errors++;
}
}
?>
<div class="infobox">
<?php
if ($errors == 0) {
echo $online;
} elseif ($errors > 1) {
echo $offline;
}
?>
</div>
<div class="overallmesssage">
<h3></h3>
</div>