加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 02:15:37 所属栏目:PHP教程 来源:网络整理
导读:《PHP实战:PHP实现服务器状态监控的方法》要点: 本文介绍了PHP实战:PHP实现服务器状态监控的方法,希望对您有用。如果有疑问,可以联系我们。 PHP教程 本篇章节讲解PHP实现服务器状态监控的办法.供大家参考研究.具体分析如下: PHP教程 PHP服务器

《PHP实战: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为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读