预期准备

  1. 一个139邮箱,收到邮件后,可以免费给你短信提醒。如果你不需要短信提醒功能,用什么邮箱都可以
  2. 另外一个可以运行PHP文件的Web服务器(相当于监控服务器),现在免费的PHP网站空间很多,上网搜搜。如果将PHP监控文件放到你自己的服务器上,这个监控文件也就等于摆设,服务器挂掉了,它也无法运行了,怎么能起到监控作用呢?

创建监控文件

打开你喜欢的文本编辑器,新建一个PHP文件,命名为monitor.php。这部分代码也很简单,就是两个函数,一个用于测试服务器是否可以访问,另一个用于给你发送邮件通知

复制粘贴以下代码至monitor.php文件:

<?php
function check($host, $find)
{
$fp = fsockopen($host, 80, $errno, $errstr, 10);
if (!$fp)
{
echo "$errstr ($errno)\n";
} else
{
$header = "GET / HTTP/1.1\r\n";
$header .= "Host: $host\r\n";
$header .= "Connection: close\r\n\r\n";
fputs($fp, $header);
while (!feof($fp))
{
$str .= fgets($fp, 1024);
}
fclose($fp);
return (strpos($str, $find) !== false);
}
} function alert($host)
{
/* 下面的youremail@139.com改成你的邮箱地址 */
mail('youremail@139.com', 'Monitoring', $host.' down');
} /* 下面的网址改成你要监控的网址 */
$host = 'www.ludou.org'; /* 下面的ludou.org改成你的网站首页源代码中的一段特殊字符串 */
$find = 'ludou.org'; if (!check($host, $find))
alert($host); ?>

第一个函数check(),需要传递两个参数:第一$host是你想要监控的网站(如:www.ludou.org);第二个$find用于查找你的网站首页源代码中的一段字符串,其实添加这个的目的是出于安全考虑,如果你的首页包含这段字符串,说明你的网页没有被修改(如:被骇客恶意修改)。

如果你的网站无法访问或者安全字符串找不到,将会运行alert()函数,给你发送告警邮件。请确保你的监控主机可以正常使用PHP的发送邮件函数mail(),否则将无法发送邮件,替代方法是使用phpmailer

好了,保存monitor.php,并上传至你的监控服务器上。

设置一个计划任务

现在问题又来了,要想让monitor.php运行,我们得在浏览器中打开http://mymonitoringserver.com/monitor.php才能检测服务器状态,这样的监控也等于白搭。

解决这个问题的办法是使用计划任务(Cron Job),大多数虚拟主机都提供了这个功能,它可以在你设定的时刻自动地运行php脚本(例如每小时运行一次monitor.php),关于计划任务的设定可根据各人的主机来设定,遇到问题可以联系主机的客服。

设定好计划任务的运行时间间隔,还要设置计划任务的命令,这里提供一条样例:
lynx > /dev/null -dump http://mymonitoringserver.com/monitor.php


果你的主机不提供计划任务(Cron
Job)的功能,这里给你推荐一个免费提供计划任务的网站,http://www.setcronjob.com/,申请一个账号,进行简单的设置就可以
免费使用计划任务功能了。这里是一个功能预览,可以先练练手http://www.setcronjob.com/cp.php

后记


此本教程就结束,是不是感觉特麻烦呢?这么多代码,这么多设置,太麻烦了吧?确实有点,但是上面提供的是一种方法,一种原理,了解了解,练练手也没什么大
不了的。其实有很多网站提供免费的网站监控功能,只需输入网址和邮箱地址就可以帮你监控网站了,你知道的话,能否给推荐个?

PHP 监控服务器动态的更多相关文章

  1. HighChartS cpu利用率动态图(Java版)

    来源:http://www.cnblogs.com/haifg/p/3217699.html   最近项目需要监控服务器cpu的利用率,并做成动态图.在网上查找了一些资料,最终选择了HighChart ...

  2. 基于springboot通过注解AOP动态切换druid多数据源--mybatis

    控制于接口之上: 开始:demo地址  在lsr-core-base中 自定义注解: /** * @Description: 数据源切换注解 * @Package: lsr-microservice ...

  3. 一、部署监控服务器--安装LNMP环境

    1.要求: 本案例要求部署-台Zabbix监控服务器, -台被监控主机,为进一步执行具体的监控任务做准备:1.安装LNMP环境2.源码安装Zabbix3.安装监控端主机,修改基本配置4.初始化Zabb ...

  4. iOS可视化动态绘制连通图

    上篇博客<iOS可视化动态绘制八种排序过程>可视化了一下一些排序的过程,本篇博客就来聊聊图的东西.在之前的博客中详细的讲过图的相关内容,比如<图的物理存储结构与深搜.广搜>.当 ...

  5. Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示

    Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...

  6. Ubuntu 16.10 安装byzanz截取动态效果图工具

    1.了解byzanz截取动态效果图工具 byzanz能制作文件小,清晰的GIF动态效果图,不足就是,目前只能通过输入命令方式来录制. byzanz主要的参数选项有: -d, --duration=SE ...

  7. .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整(续)-使用配置文件动态注入

    上次实现了依赖注入,但是web项目必须要引用业务逻辑层和数据存储层的实现,项目解耦并不完全:另一方面,要同时注入业务逻辑层和数据访问层,注入的服务直接写在Startup中显得非常臃肿.理想的方式是,w ...

  8. 【开源】.Net 动态脚本引擎NScript

    开源地址: https://git.oschina.net/chejiangyi/NScript 开源QQ群: .net 开源基础服务  238543768 .Net 动态脚本引擎 NScript   ...

  9. Redis的简单动态字符串实现

    Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,sds)的抽象类 ...

随机推荐

  1. Y Combinator

    常见的例子 阶乘函数: fact = (a) -> if a > 0 then a * fact(a - 1) else 1 问题的提出 如上,在fact函数中调用了fact本身,无法使用 ...

  2. SAP SE11 网格布局显示

    SE11 进入数据显示界面后 在  Settings -> User Parameters,  Data Browser 页面 勾选ALV Grid display 即可.

  3. MVC5+EF6 入门完整教程五

    上篇文章介绍了EF实现CRUD及一些基本的Html Helpers. 这次我们将会对之前的内容进行一些修改和重构: 引入Bootstrap样式,搭建几类共用的模板页,对UI进行一些改造 分类介绍Htm ...

  4. php crc32,md5,sha1,mhash测试结果

    总结:php  自带hash mhash 用于散列只能加密   扩展mcrypt 用于加解密 对文件加密有的文件会隐藏换行,或者读取方式等影响导致结果不一致. 1.crc32 php: a.系统crc ...

  5. MySql学习(三) —— 子查询(where、from、exists) 及 连接查询(left join、right join、inner join、union join)

    注:该MySql系列博客仅为个人学习笔记. 同样的,使用goods表来练习子查询,表结构如下: 所有数据(cat_id与category.cat_id关联): 类别表: mingoods(连接查询时作 ...

  6. 关于java对Excel的读取

    /*注意:读取的Excel文件 请另存为2003版本的Excel,否则可能会报错别忘记导入第三方的jar包*/package com.zzp.ExcelParse;import jxl.Cell;im ...

  7. .net中的序列化

    常见的序列化格式和方法 在.net中,常见的序列化格式主要有json,二进制和xml,总结如下表格. 注意事项 关于实体特性标注规则: 1,.net中所有用于序列化的实体的class上应该加上[Ser ...

  8. 网站优化之PHPCMS如何开启伪静态

    做为一名网站优化方面的工作,那么选择CMS系统的时候,有良好的网站优化功能就是一个好的CMS的标准之一,而系统是否支持伪静态,则是URL优化的工作之一,而PHPCMS是一款网站优化方面做得比较成功的C ...

  9. Flexbox,更优雅的布局

    在设计的眼中,排版的操作是一件很简单的事情,靠左.置中.靠右,我只要点一下,所有元素,就会乖乖的到指定的位置. 但到了前端在排版的实现上,就不是这样了. 我们常常得用一堆其实本来不是这样用的属性来做 ...

  10. http——tinyhttp分析

    1.前言: 1)tinyhttpd是一个500行+的http服务器 2)支持迭代和多线程并发两种服务器模型 3)支持GET和POST方法 4)支持CGI(fork.execl方式) 5)虽然响应的ht ...