PHP实现服务器状态监控的方法
本文实例讲述了PHP实现服务器状态监控的方法。分享给大家供大家参考。具体分析如下:
PHP服务器状态监控对于很多朋友来讲都没做,只有看到网站挂了才知道,这种半夜网站关了是不知道情况了,对于网站也非常不好,为此这两天抽空写了个网页服务器状态监控,看到有朋友说需要,那我就放出来吧。很简单的东西。
使用方法:
打开压缩包里面的status.php文件。编辑这里的内容为你自己的邮箱信息。代码如下:
$mail->Host ='smtp.exmail.qq.com'; //SMTP服务器
$mail->Port =25; //SMTP服务器的端口号
$mail->Username ='admin@xxx.com'; //SMTP服务器用户名
$mail->Password ='password'; //SMTP服务器密码
$mail->SetFrom('admin@xxx.com','Status');
$mail->AddReplyTo('admin@xxx.com','Status');
$mail->Subject =$subject;
$mail->AltBody ='Toviewthemessage,pleaseuseanHTMLcompatibleemailviewer!';//optional,commentoutandtest
$mail->MsgHTML($body);
$address='admin@admin.com'; //接收邮箱
//更改这里的内容为你要监控的IP:
$server_ip_list=array(
'61.135.169.121',
'221.204.173.200',
'173.194.127.83'
);然后访问你http://yourdomain.com/status.php文件,即可看到当前服务器状态并且自动发送邮件到你设置的邮箱。如果需要自动监控,请添加Cron任务或者使用什么监控宝之类的!
完整代码如下:
<?php
/*
*服务器状态监控
*/
header('Content-type:text/html;charset=utf-8');
include'./smtp/class.smtp.php';
include'./smtp/class.phpmailer.php';
functionsendmail($subject='',$body=''){
date_default_timezone_set('Asia/Shanghai');//设定时区东八区
$mail =newPHPMailer();//new一个PHPMailer对象出来
//$body =eregi_replace("[]",'',$body);//对邮件内容进行必要的过滤
$mail->CharSet="UTF-8";//设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
$mail->IsSMTP();//设定使用SMTP服务
$mail->SMTPAuth =true; //启用SMTP验证功能
$mail->Host ='smtp.exmail.qq.com'; //SMTP服务器
$mail->Port =25; //SMTP服务器的端口号
$mail->Username ='admin@xxx.com'; //SMTP服务器用户名
$mail->Password ='password'; //SMTP服务器密码
$mail->SetFrom('admin@xxx.com','Status');
$mail->AddReplyTo('admin@xxx.com','Status');
$mail->Subject =$subject;
$mail->AltBody ='Toviewthemessage,pleaseuseanHTMLcompatibleemailviewer!';//optional,commentoutandtest
$mail->MsgHTML($body);
$address='admin@admin.com';//接收邮箱
$mail->AddAddress($address,'');
//$mail->AddAttachment("images/phpmailer.gif"); //attachment 附件
//$mail->AddAttachment("images/phpmailer_mini.gif");//attachment
if(!$mail->Send()){
echo'MailerError:'.$mail->ErrorInfo;
}else{
//echo"Messagesent!恭喜,邮件发送成功!";
}
}
//checkserverstatus
functioncheckServerSatatus($ip){
$str=null;
$fp=@fsockopen($ip,80,$errno,$errstr,10);
if(!$fp){
returnfalse;
}else{
fclose($fp);
returntrue;
}
}
$server_ip_list=array(
'61.135.169.121',
'221.204.173.200',
'173.194.127.83'
);
?>
<!doctypehtml>
<htmllang="zh_CN">
<head>
<metacharset="UTF-8">
<title>服务器状态监控</title>
<style>
*{
margin:0px;
padding:0px;
}
body{
font-family:"Microsoftyahei",Arial;
font-size:14px;
}
header{
height:40px;
background-color:#2e2e2e;
width:100%;
line-height:35px;
}
header>h3{
color:#fff;
margin-left:20px;
}
footer{
text-align:center;
}
a{
color:#424242;
text-decoration:none;
}
.wrap{
height:auto;
zoom:1;
overflow:auto;
max-width:500px;
width:100%;
margin:50pxauto;
}
.table{
border-collapse:collapse;
border:1pxsolid#eee;
width:100%;
}
tr,td{
color:#424242;
border-collapse:collapse;
border:1pxsolid#F0F0F0;
height:30px;
text-align:center;
}
tr:nth-child(2n+1){
background-color:#F7F8FC;
}
tr:hover{
background-color:#F7F8FC;
}
.online,.offline{
height:20px;
background-color:#2ECC71;
width:40px;
margin:0pxauto;
-webkit-border-radius:5px;
-moz-border-radius:5px;
border-radius:5px;
color:#fff;
}
.offline{
width:50px;
background-color:#E74C3C;
}
</style>
</head>
<body>
<header>
<h3>服务器在线状态监控</h3>
</header>
<divclass="wrap">
<tableclass="table">
<tbody>
<tr><td>ID</td><td>Location</td><td>Address</td><td>Status</td></tr>
<?php
$i=0;
foreach($server_ip_listas$key=>$val){
$api=file_get_contents('http://ip.taobao.com/service/getIpInfo.php?ip='.$server_ip_list[$key].'');
$json=json_decode($api);
$result=$json->data;
$i++;
if(checkServerSatatus($server_ip_list[$key])){
echo"<tr><td>{$i}</td><td>{$result->country}{$result->region}{$result->city}</td><td>{$server_ip_list[$key]}</td><td><divclass="online">在线</div></td></tr>";
}else{
echo"<tr><td>{$i}</td><td>{$result->country}{$result->region}{$result->city}</td><td>{$server_ip_list[$key]}</td><td><divclass="offline">不在线</div></td></tr>";
$subject="您的服务器{$server_ip_list[$key]}无法访问!";
$body="您的服务器{$server_ip_list[$key]}无法访问,此邮件根据你设置的监控频率发送,当服务器恢复正常邮件自动停止发送!";
sendmail($subject,$body);
}
}
?>
</tbody>
</table>
</div>
</body>
</html>注意:
include'./smtp/class.smtp.php';
include'./smtp/class.phpmailer.php';
文件可以下载phpmailer包然后我们在包里面这两个文件复制出来然后即可使用了。
ps:这个只是一个非常的简单的不能很好的监控到服务器了,现在有很多成熟的免费产品都可以更好的达到我们要求,如dnspod里面有一个D监控了,然后我们就可以操作。
希望本文所述对大家的PHP程序设计有所帮助。