PHP实现服务器状态监控的方法
《PHP实战:PHP实现服务器状态监控的方法》要点: PHP教程本篇章节讲解PHP实现服务器状态监控的办法.分享给大家供大家参考.具体分析如下: 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任务或者使用什么监控宝之类的! 完整代码如下:
代码如下:
<?php
/* ?* 服务器状态监控 ?*/ 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,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' ????? ); ?> <!doctype html> <html lang="zh_CN"> <head> ?<meta charset="UTF-8"> ?<title>服务器状态监控</title> ?<style> ?* { ? margin: 0px; ? padding: 0px; ?} ?body { ? font-family: "Microsoft yahei",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: 50px auto; ?} ?.table { ? border-collapse: collapse; ? border: 1px solid #eee; ? width: 100%; ?} ?tr,td{ ? color: #424242; ? border-collapse: collapse; ? border: 1px solid #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: 0px auto; ? -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> ?<div class="wrap"> ? <table class="table"> ?? <tbody> ??? <tr><td>ID</td><td>Location</td><td>Address</td><td>Status</td></tr> ??? <?php ???? $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 "<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>"; ????? } else { ?????? 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>"; ?????? $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包然后我们在包里面这两个文件复制出来然后即可使用了. PHP教程ps:这个只是一个非常的简单的不能很好的监控到服务器了,现在有很多成熟的免费产品都可以更好的达到我们要求,如dnspod里面有一个D监控了,然后我们就可以操作. PHP教程希望本文所述对大家的PHP程序设计有所赞助. 欢迎参与《PHP实战:PHP实现服务器状态监控的方法》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |