如何使用PHP轻松地监视您的Web服务器
为了确保你的网站始终是能够访问的,你需要监视他。本文中,我会告诉你如何轻松地创建一个监测脚本会检查您的网站的可用性和发送电子邮件或短信提醒你,在你的网站出问题的时候。
必要条件
这个脚本必须放在一个和你需要监视的网站服务器不同的服务器上,如果这个脚本和你要监视的网站放在一起,那么就没什么用了。如果你的服务器挂掉了,那么这个脚本同样不能运行,当然也不能起到监视作用了。
最好的解决办法就是有一台专用的监测服务器,而且是一台独立的服务器。如果你打算通过价格较低的共享虚拟主机如HostGator或WpWebHost等来实现,请注意大多数的虚拟主机并不让您设置cron任务。
1、创建监控脚本
第一部分是创建监控脚本。使用你最喜爱的文本编辑器创建一个名为 _monitor.php_的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@163.com改成你的邮箱地址 */
mail('youremail@163.com', 'Monitoring', $host.' down');
}
/* 下面的网址改成你要监控的网址 */
$host = 'awy.me';
/* 下面的awy.me改成你的网站首页源代码中的一段特殊字符串 */
$find = 'awy.me';
if (!check($host, $find))
alert($host);
?>
第一个功能,check(), 有两个参数:第一个检查你想检测的服务器可用性(例如,awy.me ),第二个参数是寻找网页上一些特定的关键词。 第二个参数是一个额外的保险:事实上,通过检查网站首页上一个特定的关键词,我们可以确保该网站内容不被修改,例如,黑客入侵。
如果服务器不可用,或者没有发现特定关键词,则 alert() 函数执行,将发送电子邮件到您设置的邮件帐户。
保存 monitor.php 文件并上传到您的监控服务器。
2、定义一个cron任务
现在要想脚本运行起来,我们必须在浏览器输入http://mymonitoringserver.com/monitor.php
才能监测我们的
网站,那我们的脚本有什么用呢。
所以我们需要创建一个cron任务,使服务器每个一小时自动执行monitor.php。使用SSH链接到监视服务器,然后键入以下内容:
0 * * * * /usr/local/bin/php -q /htdocs/www/monitor.php
If your PHP scripts do not have executable permissions, 644 or -rw-r–r– for example, then as part of the command portion of the cron line, you must specify the php interpreter and pass it the filename of the PHP script (including full path to the script from your home directory) that you want executed.
现在,我们的cron将每一小时执行一次该PHP脚本。 如果问题发生了,你会收到一封电子邮件。
原文地址:http://goo.gl/1m6bL
如果你的主机不提供计划任务(Cron Job)的功能,可以使用这个免费提供计划任务的网站,http://www.setcronjob.com/ ,注册后进行简单的设置就可以免费使用计划任务功能了,不过间隔时间为1小时一次。
提供一条计划任务命令,来自露兜博客 ,可以使用在CP面板的计划任务里
lynx > /dev/null -dump http://mymonitoringserver.com/monitor.php