您好,欢迎访问一九零五行业门户网

PHP实现服务器状态监控的方法_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    = 'to view the message, please use an html compatible email viewer!'; // optional, comment out and test
$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任务或者使用什么监控宝之类的!
完整代码如下:
代码如下:
/*
 * 服务器状态监控
 */
header('content-type:text/html;charset=utf-8');
include './smtp/class.smtp.php';
include './smtp/class.phpmailer.php';
function sendmail($subject = '',$body = '') {
    date_default_timezone_set('asia/shanghai');//设定时区东八区
    $mail             = new phpmailer(); //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    = 'to view the message, please use an html compatible email viewer!'; // optional, comment out and test
    $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 'mailer error: ' . $mail->errorinfo;
    } else {
         // echo message sent!恭喜,邮件发送成功!;
    }
}
//check server status
function checkserversatatus($ip) {
 $str = null;
 $fp = @fsockopen($ip,80,$errno,$errstr,10);
 if (!$fp) {
  return false;
 } else {
  fclose($fp);
  return true;
 }
}
$server_ip_list = array(
       '61.135.169.121',
       '221.204.173.200',
       '173.194.127.83'
      );
?>
服务器状态监控
服务器在线状态监控
id location address status
$i = 0;
     foreach ($server_ip_list as $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 {$i} {$result->country}{$result->region}{$result->city} {$server_ip_list[$key]} 在线
;
      } else {
       echo {$i} {$result->country}{$result->region}{$result->city} {$server_ip_list[$key]} 不在线
;
       $subject = 您的服务器 {$server_ip_list[$key]} 无法访问!;
       $body = 您的服务器{$server_ip_list[$key]} 无法访问,此邮件根据你设置的监控频率发送,当服务器恢复正常邮件自动停止发送!;
       sendmail($subject,$body);
      }
     }
     ?>
注意:
include './smtp/class.smtp.php';
include './smtp/class.phpmailer.php';
文件可以下载phpmailer包然后我们在包里面这两个文件复制出来然后即可使用了。ps:这个只是一个非常的简单的不能很好的监控到服务器了,现在有很多成熟的免费产品都可以更好的达到我们要求,如dnspod里面有一个d监控了,然后我们就可以操作。
希望本文所述对大家的php程序设计有所帮助。
其它类似信息

推荐信息