PHP實(shí)現(xiàn)服務(wù)器狀態(tài)監(jiān)控的方法
本文實(shí)例講述了PHP實(shí)現(xiàn)服務(wù)器狀態(tài)監(jiān)控的方法。分享給大家供大家參考。具體分析如下:
PHP服務(wù)器狀態(tài)監(jiān)控對(duì)于很多朋友來(lái)講都沒(méi)做,只有看到網(wǎng)站掛了才知道,這種半夜網(wǎng)站關(guān)了是不知道情況了,對(duì)于網(wǎng)站也非常不好,為此這兩天抽空寫(xiě)了個(gè)網(wǎng)頁(yè)服務(wù)器狀態(tài)監(jiān)控,看到有朋友說(shuō)需要,那我就放出來(lái)吧。很簡(jiǎn)單的東西。
使用方法:
打開(kāi)壓縮包里面的status.php文件。編輯這里的內(nèi)容為你自己的郵箱信息。代碼如下:
$mail->Port = 25; // SMTP服務(wù)器的端口號(hào)
$mail->Username = 'admin@xxx.com'; // SMTP服務(wù)器用戶名
$mail->Password = 'password'; // SMTP服務(wù)器密碼
$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'; //接收郵箱
//更改這里的內(nèi)容為你要監(jiān)控的IP:
$server_ip_list = array(
'61.135.169.121',
'221.204.173.200',
'173.194.127.83'
);
然后訪問(wèn)你http://yourdomain.com/status.php文件,即可看到當(dāng)前服務(wù)器狀態(tài)并且自動(dòng)發(fā)送郵件到你設(shè)置的郵箱。如果需要自動(dòng)監(jiān)控,請(qǐng)?zhí)砑覥ron任務(wù)或者使用什么監(jiān)控寶之類的!
完整代碼如下:
/*
* 服務(wù)器狀態(tài)監(jiān)控
*/
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');//設(shè)定時(shí)區(qū)東八區(qū)
$mail = new PHPMailer(); //new一個(gè)PHPMailer對(duì)象出來(lái)
// $body = eregi_replace("[]",'',$body); //對(duì)郵件內(nèi)容進(jìn)行必要的過(guò)濾
$mail->CharSet ="UTF-8";//設(shè)定郵件編碼,默認(rèn)ISO-8859-1,如果發(fā)中文此項(xiàng)必須設(shè)置,否則亂碼
$mail->IsSMTP(); // 設(shè)定使用SMTP服務(wù)
$mail->SMTPAuth = true; // 啟用 SMTP 驗(yàn)證功能
$mail->Host = 'smtp.exmail.qq.com'; // SMTP 服務(wù)器
$mail->Port = 25; // SMTP服務(wù)器的端口號(hào)
$mail->Username = 'admin@xxx.com'; // SMTP服務(wù)器用戶名
$mail->Password = 'password'; // SMTP服務(wù)器密碼
$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!恭喜,郵件發(fā)送成功!";
}
}
//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>服務(wù)器狀態(tài)監(jiān)控</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>服務(wù)器在線狀態(tài)監(jiān)控</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 = "您的服務(wù)器 {$server_ip_list[$key]} 無(wú)法訪問(wèn)!";
$body = "您的服務(wù)器{$server_ip_list[$key]} 無(wú)法訪問(wèn),此郵件根據(jù)你設(shè)置的監(jiān)控頻率發(fā)送,當(dāng)服務(wù)器恢復(fù)正常郵件自動(dòng)停止發(fā)送!";
sendmail($subject,$body);
}
}
?>
</tbody>
</table>
</div>
</body>
</html>
注意:
include './smtp/class.smtp.php';
include './smtp/class.phpmailer.php';
文件可以下載phpmailer包然后我們?cè)诎锩孢@兩個(gè)文件復(fù)制出來(lái)然后即可使用了。
ps:這個(gè)只是一個(gè)非常的簡(jiǎn)單的不能很好的監(jiān)控到服務(wù)器了,現(xiàn)在有很多成熟的免費(fèi)產(chǎn)品都可以更好的達(dá)到我們要求,如dnspod里面有一個(gè)D監(jiān)控了,然后我們就可以操作。
希望本文所述對(duì)大家的PHP程序設(shè)計(jì)有所幫助。
- PHP程序員簡(jiǎn)單的開(kāi)展服務(wù)治理架構(gòu)操作詳解(一)
- php獲取服務(wù)器端mac和客戶端mac的地址支持WIN/LINUX
- PHP 服務(wù)器配置(使用Apache及IIS兩種方法)
- PHP 顯示客戶端IP與服務(wù)器IP的代碼
- PHP實(shí)現(xiàn)Socket服務(wù)器的代碼
- php獲取服務(wù)器信息的實(shí)現(xiàn)代碼
- php socket客戶端及服務(wù)器端應(yīng)用實(shí)例
- PHP向socket服務(wù)器收發(fā)數(shù)據(jù)的方法
- 利用php獲取服務(wù)器時(shí)間的實(shí)現(xiàn)代碼
- PHP程序員簡(jiǎn)單的開(kāi)展服務(wù)治理架構(gòu)操作詳解(二)
相關(guān)文章
PHP調(diào)用Webservice實(shí)例代碼
NuSoap是PHP環(huán)境下的WebService編程工具,用于創(chuàng)建或調(diào)用WebService。2011-07-07smarty靜態(tài)實(shí)驗(yàn)表明,網(wǎng)絡(luò)上是錯(cuò)的~呵呵
smarty靜態(tài)實(shí)驗(yàn)表明,網(wǎng)絡(luò)上是錯(cuò)的~呵呵...2006-11-11php下獲取http狀態(tài)的實(shí)現(xiàn)代碼
在項(xiàng)目開(kāi)發(fā)中,有時(shí)我們需要知道遠(yuǎn)程的URL地址是否能訪問(wèn)正常,判斷其正常與否后進(jìn)行下一步的操作,那么在PHP中如何獲取遠(yuǎn)程HTTP的狀態(tài)呢2014-05-05詳解PHP實(shí)現(xiàn)定時(shí)任務(wù)的五種方法
這幾天需要用PHP寫(xiě)一個(gè)定時(shí)抓取網(wǎng)頁(yè)的服務(wù)器應(yīng)用。 在網(wǎng)上搜了一下解決辦法, 找到幾種解決辦法,現(xiàn)總結(jié)如下。2016-07-07windows環(huán)境下php配置memcache的具體操作步驟
本篇文章是對(duì)windows環(huán)境下php配置memcache的具體操作步驟進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06PHP實(shí)現(xiàn)一個(gè)限制實(shí)例化次數(shù)的類示例
這篇文章主要介紹了PHP實(shí)現(xiàn)一個(gè)限制實(shí)例化次數(shù)的類,涉及php面向?qū)ο蟪绦蛟O(shè)計(jì)中靜態(tài)對(duì)象與靜態(tài)方法的相關(guān)使用技巧,需要的朋友可以參考下2019-09-09php數(shù)據(jù)流中第K大元素的計(jì)算方法及代碼分析
在本篇文章里小編給大家整理了一篇關(guān)于php數(shù)據(jù)流中第K大元素的計(jì)算方法及代碼分析內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-07-07php中g(shù)et_object_vars()在數(shù)組的實(shí)例用法
在本篇文章小編給大家整理的是一篇關(guān)于php中g(shù)et_object_vars()在數(shù)組的實(shí)例用法,對(duì)此有興趣的朋友們可以學(xué)習(xí)下。2021-02-02