预期准备
一个139邮箱,收到邮件后,可以免费给你短信提醒。如果你不需要短信提醒功能,用什么邮箱都可以
另外一个可以运行PHP文件的Web服务器(相当于监控服务器),现在免费的PHP网站空间很多,上网搜搜。如果将PHP监控文件放到你自己的服务器上,这个监控文件也就等于摆设,服务器挂掉了,它也无法运行了,怎么能起到监控作用呢?
创建监控文件
打开你喜欢的文本编辑器,新建一个PHP文件,命名为monitor.php。这部分代码也很简单,就是两个函数,一个用于测试服务器是否可以访问,另一个用于给你发送邮件通知
复制粘贴以下代码至monitor.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改成你的邮箱地址 */
(
'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
后记
到此本教程就结束,是不是感觉特麻烦呢?这么多代码,这么多设置,太麻烦了吧?确实有点,但是上面提供的是一种方法,一种原理,了解了解,练练手也没什么大不了的。其实有很多网站提供免费的网站监控功能,只需输入网址和邮箱地址就可以帮你监控网站了,你知道的话,能否给推荐个?
参考文章