PHP实现服务器状态监控的方法
2023-06-13 09:15:32 时间
本文实例讲述了PHP实现服务器状态监控的方法。分享给大家供大家参考。具体分析如下:
PHP服务器状态监控对于很多朋友来讲都没做,只有看到网站挂了才知道,这种半夜网站关了是不知道情况了,对于网站也非常不好,为此这两天抽空写了个网页服务器状态监控,看到有朋友说需要,那我就放出来吧。很简单的东西。
使用方法:
打开压缩包里面的status.php文件。编辑这里的内容为你自己的邮箱信息。代码如下:
$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任务或者使用什么监控宝之类的!
完整代码如下:
/*
*服务器状态监控
*/
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程序设计有所帮助。
相关文章
- 深入揭示:MySQL与PHP的联系(mysql与php关系)
- MySQL异常捕获:使用PHP技巧轻松完成(php捕获mysql异常)
- 使用Redis集群提升PHP性能(redis集群php)
- 版本实现Linux安装多个PHP版本的方法(linux安装多个php)
- 数据库远程连接MySQL数据库:利用PHP实现简易方法(php远程mysql)
- 使用PHP操作Redis:简单灵活的方法(php如何使用redis)
- PHP让Redis让火焰升起(php开启redis)
- 数据PHP实现MySQL数据导出的实现方法(php导出mysql)
- Linux系统如何实现PHP开机自启动?(linux开机启动php)
- 学习PHP程序员必会的Linux技术(php程序员linux)
- 安装Linux实现一键安装PHP环境(linux一键php)
- PHP连接MSSQL数据库的方法和步骤(php如何连接mssql)
- PHP操作MySQL数据库详解,快速学习调用方法(php怎么调用mysql)
- 一步一步教你PHP操作MSSQL的下载方法(php_mssql下载)
- 基于 PHP 和 MSSQL 的连接类开发实战(php mssql连接类)
- 深入Linux:高效部署PHP项目(linux部署php项目)
- Linux持续更新:升级PHP版本的魅力(linux升级php版本)
- 基于PHP的Redis队列监控实践(redis队列监控php)
- PHP通用分页类page.php[仿google分页]
- 《PHP编程最快明白》第七讲:php图片验证码与缩略图
- PHP中防止直接访问或查看或下载config.php文件的方法