当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-03 14:34:04 浏览: 评论:0 

这篇文章主要介绍了PHP实现服务器状态监控的方法,可实现对指定IP服务器状态的有效监控,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了PHP实现服务器状态监控的方法。分享给大家供大家参考。具体分析如下:

PHP服务器状态监控对于很多朋友来讲都没做,只有看到网站挂了才知道,这种半夜网站关了是不知道情况了,对于网站也非常不好,为此这两天抽空写了个网页服务器状态监控,看到有朋友说需要,那我就放出来吧。很简单的东西。

使用方法:

打开压缩包里面的status.php文件。编辑这里的内容为你自己的邮箱信息。代码如下:

  1. $mail->Host       = 'smtp.exmail.qq.com';      // SMTP 服务器 
  2. $mail->Port       = 25;   // SMTP服务器的端口号 
  3. $mail->Username   = 'admin@xxx.com';  // SMTP服务器用户名 
  4. $mail->Password   = 'password';            // SMTP服务器密码 
  5. $mail->SetFrom('admin@xxx.com','Status'); 
  6. $mail->AddReplyTo('admin@xxx.com','Status'); 
  7. $mail->Subject    = $subject
  8. $mail->AltBody    = 'To view the message, please use an HTML compatible email viewer!'// optional, comment out and test 
  9. $mail->MsgHTML($body); 
  10. $address = 'admin@admin.com';   //接收邮箱 
  11. //更改这里的内容为你要监控的IP: 
  12. $server_ip_list = array
  13. '61.135.169.121'
  14. '221.204.173.200'
  15. '173.194.127.83' 
  16. ); 

然后访问你http://yourdomain.com/status.php文件,即可看到当前服务器状态并且自动发送邮件到你设置的邮箱。如果需要自动监控,请添加Cron任务或者使用什么监控宝之类的!

完整代码如下:

  1. <?php 
  2. /* 
  3.  * 服务器状态监控 
  4.  */ 
  5. header('Content-type:text/html;charset=utf-8'); 
  6. include './smtp/class.smtp.php'
  7. include './smtp/class.phpmailer.php'
  8. function sendmail($subject = '',$body = '') { 
  9.     date_default_timezone_set('Asia/Shanghai');//设定时区东八区 
  10.     $mail             = new PHPMailer(); //new一个PHPMailer对象出来 
  11.     // $body            = eregi_replace("[]",'',$body); //对邮件内容进行必要的过滤 
  12.     $mail->CharSet ="UTF-8";//设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码 
  13.     $mail->IsSMTP(); // 设定使用SMTP服务 
  14.     $mail->SMTPAuth   = true;                  // 启用 SMTP 验证功能 
  15.     $mail->Host       = 'smtp.exmail.qq.com';      // SMTP 服务器 
  16.     $mail->Port       = 25;   // SMTP服务器的端口号 
  17.     $mail->Username   = 'admin@xxx.com';  // SMTP服务器用户名 
  18.     $mail->Password   = 'password';            // SMTP服务器密码 
  19.     $mail->SetFrom('admin@xxx.com','Status'); 
  20.     $mail->AddReplyTo('admin@xxx.com','Status'); 
  21.     $mail->Subject    = $subject
  22.     $mail->AltBody    = 'To view the message, please use an HTML compatible email viewer!'// optional, comment out and test 
  23.     $mail->MsgHTML($body); 
  24.     $address = 'admin@admin.com'//接收邮箱 
  25.     $mail->AddAddress($address''); 
  26.     //$mail->AddAttachment("images/phpmailer.gif");      // attachment  附件 
  27.     //$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment 
  28.     if(!$mail->Send()) { 
  29.         echo 'Mailer Error: ' . $mail->ErrorInfo; 
  30.     } else { 
  31.          // echo "Message sent!恭喜,邮件发送成功!"; 
  32.     } 
  33. //check server status 
  34. function checkServerSatatus($ip) { 
  35.  $str = null; 
  36.  $fp = @fsockopen($ip,80,$errno,$errstr,10); 
  37.  if (!$fp) { 
  38.   return false; 
  39.  } else { 
  40.   fclose($fp); 
  41.   return true; 
  42.  } 
  43. $server_ip_list = array
  44.        '61.135.169.121'
  45.        '221.204.173.200'
  46.        '173.194.127.83' 
  47.       ); 
  48. ?> 
  49. <!doctype html> 
  50. <html lang="zh_CN"
  51. <head> 
  52.  <meta charset="UTF-8"
  53.  <title>服务器状态监控</title> 
  54.  <style> 
  55.  * { 
  56.   margin: 0px; 
  57.   padding: 0px; 
  58.  } 
  59.  body { 
  60.   font-family: "Microsoft yahei",Arial; 
  61.   font-size:14px; 
  62.  } 
  63.  header { 
  64.   height: 40px; 
  65.   background-color: #2e2e2e; 
  66.   width: 100%; 
  67.   line-height: 35px; 
  68.  } 
  69.  header > h3 { 
  70.   color: #fff; 
  71.   margin-left: 20px; 
  72.  } 
  73.  footer { 
  74.   text-align: center; 
  75.  } 
  76.  a { 
  77.   color: #424242; 
  78.   text-decoration: none; 
  79.  } 
  80.  .wrap { 
  81.   height: auto; 
  82.   zoom:1; 
  83.   overflow: auto; 
  84.   max-width: 500px; 
  85.   width: 100%; 
  86.   margin: 50px auto; 
  87.  } 
  88.  .table { 
  89.   border-collapse: collapse; 
  90.   border: 1px solid #eee; 
  91.   width: 100%; 
  92.  } 
  93.  tr,td{ 
  94.   color: #424242; 
  95.   border-collapse: collapse; 
  96.   border: 1px solid #F0F0F0; 
  97.   height: 30px; 
  98.   text-align: center; 
  99.  } 
  100.  tr:nth-child(2n+1) { 
  101.   background-color: #F7F8FC; 
  102.  } 
  103.  tr:hover { 
  104.   background-color: #F7F8FC; 
  105.  } 
  106.  .online,.offline { 
  107.   height: 20px; 
  108.   background-color: #2ECC71; 
  109.   width: 40px; 
  110.   margin: 0px auto; 
  111.   -webkit-border-radius: 5px; 
  112.   -moz-border-radius: 5px; 
  113.   border-radius: 5px; 
  114.   color: #fff; 
  115.  } 
  116.  .offline { 
  117.   width: 50px; 
  118.   background-color: #E74C3C; 
  119.  } 
  120.  </style> 
  121. </head> 
  122. <body> 
  123.  <header> 
  124.   <h3>服务器在线状态监控</h3> 
  125.  </header> 
  126.  <div class="wrap"
  127.   <table class="table"
  128.    <tbody> 
  129.     <tr><td>ID</td><td>Location</td><td>Address</td><td>Status</td></tr> 
  130.     <?php 
  131.      $i = 0; 
  132.      foreach ($server_ip_list as $key => $val) { 
  133.       $api = file_get_contents('http://ip.taobao.com/service/getIpInfo.php?ip='.$server_ip_list[$key].''); 
  134.       $json = json_decode($api); 
  135.       $result = $json->data; 
  136.       $i++; 
  137.       if (checkServerSatatus($server_ip_list[$key])) { 
  138.        echo "<tr><td>{$i}</td><td>{$result->country}{$result->region}{$result->city}</td><td>{$server_ip_list[$key]}</td><td><div class="online">在线</div></td></tr>"
  139.       } else { 
  140.        echo "<tr><td>{$i}</td><td>{$result->country}{$result->region}{$result->city}</td><td>{$server_ip_list[$key]}</td><td><div class="offline">不在线</div></td></tr>"
  141.        $subject = "您的服务器 {$server_ip_list[$key]} 无法访问!"
  142.        $body = "您的服务器{$server_ip_list[$key]} 无法访问,此邮件根据你设置的监控频率发送,当服务器恢复正常邮件自动停止发送!"
  143.        sendmail($subject,$body); 
  144.       } 
  145.      } 
  146.      ?> 
  147.    </tbody> 
  148.   </table> 
  149.  </div> 
  150.  
  151. </body> 
  152. </html> 

注意:

include './smtp/class.smtp.php';

include './smtp/class.phpmailer.php';

文件可以下载phpmailer包然后我们在包里面这两个文件复制出来然后即可使用了。

ps:这个只是一个非常的简单的不能很好的监控到服务器了,现在有很多成熟的免费产品都可以更好的达到我们要求,如dnspod里面有一个D监控了,然后我们就可以操作。

希望本文所述对大家的PHP程序设计有所帮助。

Tags: PHP服务器状态监控

分享到: