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程序设计有所帮助。