PHP实现服务器状态监控的方法
发布:smiling 来源: PHP粉丝网 添加日期:2021-05-03 14:34:04 浏览: 评论:0
这篇文章主要介绍了PHP实现服务器状态监控的方法,可实现对指定IP服务器状态的有效监控,非常具有实用价值,需要的朋友可以参考下
本文实例讲述了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, 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'
- );
- ?>
- <!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包然后我们在包里面这两个文件复制出来然后即可使用了。
ps:这个只是一个非常的简单的不能很好的监控到服务器了,现在有很多成熟的免费产品都可以更好的达到我们要求,如dnspod里面有一个D监控了,然后我们就可以操作。
希望本文所述对大家的PHP程序设计有所帮助。
Tags: PHP服务器状态监控
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)