zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

PHP实现服务器状态监控的方法

2023-06-13 09:15:32 时间

本文实例讲述了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程序设计有所帮助。