多くの友人は PHP サーバーのステータス監視をしたことがありません。Web サイトが夜中にシャットダウンされると、その状況がわかりません。この 2 日間で時間をかけて書いてきました。Web サーバーのステータス モニターが必要だという人がいたら、公開します。とてもシンプルなものです。
次に、http://yourdomain.com/status.php ファイルにアクセスして現在のサーバーのステータスを確認し、設定した電子メール アドレスに電子メールを自動的に送信します。自動監視が必要な場合は、Cron タスクを追加するか、何らかの監視ツールを使用してください。
/*
* サーバーステータス監視
*/
header('Content-type:text/html;charset=utf-8');
'./smtp/class.smtp.php' を含めます;
'./smtp/class.phpmailer.php' を含めます;
関数 sendmail($subject = '',$body = '') {
Date_default_timezone_set('Asia/Shanghai');//東巴地区のタイムゾーンを設定します
$mail = new PHPMailer(); //新しいPHPMailerオブジェクトが出てきます
$mail->CharSet ="UTF-8";//メールのエンコーディングを設定します。デフォルトは ISO-8859-1 です。中国語を送信する場合は、これを設定する必要があります。そうしないとコードが文字化けします
$mail->IsSMTP() // SMTP サービスを使用するように設定します
$mail->SMTPAuth = true; $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','ステータス');
$mail->AddReplyTo('admin@xxx.com','ステータス');
$mail->件名 = $subject;
$mail->AltBody = 'メッセージを表示するには、HTML 互換のメール ビューアを使用してください!' // オプションで、コメントアウトしてテストします
$mail->MsgHTML($body);
$address = 'admin@admin.com' //メールを受信します
;
$mail->AddAddress($address, '');
//$mail->AddAttachment("images/phpmailer.gif") // 添付ファイル Attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // 添付ファイル
If(!$mail->Send()) {
echo 'メーラー エラー: ' $mail->ErrorInfo;
} その他 {
// echo "メッセージが送信されました! おめでとうございます、メールは正常に送信されました!";
}
}
//サーバーのステータスを確認します
関数 checkServerSatatus($ip) {
$str = null;
$fp = @fsockopen($ip,80,$errno,$errstr,10);
if (!$fp) {
false を返します;
} その他 {
fclose($fp);
true を返します;
}
}
$server_ip_list = 配列(
「61.135.169.121」、
「221.204.173.200」、
「173.194.127.83」
);
?>
<頭>
<メタ文字セット="UTF-8">
サーバーステータス監視
<スタイル>
* {
マージン: 0px;
パディング: 0px;
}
ボディ{
フォントファミリー: "Microsoft yahei",Arial;
フォントサイズ:14px;
}
ヘッダー{
高さ: 40px;
背景色: #2e2e2e;
幅: 100%;
行の高さ: 35px;
}
ヘッダー > h3 {
色: #fff;
マージン左: 20px;
}
フッター{
text-align: 中央;
}
色: #424242;
テキスト装飾: なし;
}
.wrap {
高さ: 自動;
ズーム:1;
オーバーフロー: 自動;
最大幅: 500px;
幅: 100%;
マージン: 50px 自動;
}
.table {
border-collapse: 折りたたむ;
ボーダー: 1px ソリッド #eee;
幅: 100%;
}
tr,td{
色: #424242;
border-collapse: 折りたたむ;
境界線: 1 ピクセルの実線 #F0F0F0;
高さ: 30px;
text-align: 中央;
}
tr:nth-child(2n+1) {
背景色: #F7F8FC;
}
tr:ホバー{
背景色: #F7F8FC;
}
.オンライン、.オフライン {
高さ: 20px;
背景色: #2ECC71;
幅: 40px;
マージン: 0px 自動;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
境界半径: 5px;
色: #fff;
}
.オフライン {
幅: 50px;
背景色: #E74C3C;
}
スタイル>
<ヘッダー>
服务器在線上态监控
<テーブルクラス="テーブル">
<みんな>
gt;ID |
場所 | gt;住所 | gt;ステータス |
$i = 0;
foreach ($server_ip_list as $key => $val) {
$api = file_get_contents('http://ip.taabao.com/service/getIpInfo.php?ip='.$server_ip_list[$key].'');
$json = json_decode($api);
$result = $json->data;
$i++;
if (checkServerSatatus($server_ip_list[$key])) {
echo "
{$i} | {$result->country}{$result->region}{$result->city} td> | {$server_ip_list[$key]} | 在中 |
" ;
} その他 {
echo "
{$i} | {$result->country}{$result->region}{$result->city} td> | {$server_ip_list[$key]} | 非通信 |
";
$subject = "您的サーバー {$server_ip_list[$key]} 無法访问!";
$body = "您的サーバー{$server_ip_list[$key]} 無法访问,この邮件は你設定による监制御周波数送信正常,当服サーバー恢复邮件自動停止送信!";
sendmail($subject,$body);
}
}
?>
表>