想做一个网站保姆的开发
发布于:2022-01-17 09:50:54
#1 andy80129
大家好~我一个站长,想做一个网站保姆,就是实时监控数十个网站的运行情况~发生有网站当掉就给自己发邮件提醒~不用一个个网站检查的小程序~用这个框架可以实现吗?
2013-09-24 10:28:20
#3 andy80129
谢谢~刚刚大慨的看了一下~目前单个开发者最大cron数只有20个~
可是我的小网站有近100个了~有没有别的好方法实现的?
初来咋到,请多关照啊~
2013-09-24 11:40:29
#4 jake
andy80129 发表于 2013-9-24 11:40 
谢谢~刚刚大慨的看了一下~目前单个开发者最大cron数只有20个~
可是我的小网站有近100个了~有没有别的 ...
不能是“大概看”一下,最好是认真看看。
理解一下:cron是定时任务,1个定时任务里面可以做任何的操作,包括访问100个网站。
2013-09-24 12:56:05
#5 andy80129
jake 发表于 2013-9-24 12:56 
不能是“大概看”一下,最好是认真看看。
理解一下:cron是定时任务,1个定时任务里面可以做任何的操作 ...
喔~是这样啊~呵呵~嗯嗯~不好意思,是我理解错了,您刚才发的页面我仔细看过了~也进百度应用里注册~整个流程都走了一下~还是不太满足自己民的需求~我希望自己能在程序里设定扫描间隔时间~类似于Radar Website Monitor 软件的那种网站保姆~我是刚开始用PHP,之前有些别的语言底子,有说错了的请不要见怪啊~我知道PHP不支持多线程,可不可能用模似多线程加ajax局部刷新的方法来做?
2013-09-24 14:30:27
#6 jake
andy80129 发表于 2013-9-24 14:30 
喔~是这样啊~呵呵~嗯嗯~不好意思,是我理解错了,您刚才发的页面我仔细看过了~也进百度应用里注册~ ...
虽然它是在百度平台上面设置的,但是它也是跑你的php程序来执行你要的操作的。
cron最短时间是1分钟,所以要做到在你的php程序里面设定扫描间隔时间是肯定可以做到的。
比如说间隔5分钟扫描的,那么就在1分钟启动,下个4分钟不启动,然后再启动1分钟,下个4分钟不启动。
ajax是做不到你希望的样子,因为ajax是浏览器启动的。
目前业界所有的网站可用性监控,都是通过cron这种定时任务来实现的。
2013-09-24 15:02:59
#7 andy80129
jake 发表于 2013-9-24 15:02 
虽然它是在百度平台上面设置的,但是它也是跑你的php程序来执行你要的操作的。
cron最短时间是1分钟,所 ...
也就是说PHP本身不能做定时任务吗?或者借用apache都不能做是吗?
因为要扫描的网站较多~我想每个网站扫描的间隔时间单独错开来设,
所以想尽量便用自己开发的,借用别的平台始终是不好。
如果不借用百度平台可以给一个解决思路吗?谢谢了~
2013-09-24 16:15:28
#8 jake
cron是linux的定时服务,可以在随便一台linux上面设置。它也会定时执行php。
关于你说的扫描时间间隔问题,你可以把cron想象成一个无限循环任务,它会不间断地执行php,至于要什么间隔执行哪些网站的扫描任务,那是你这个不断执行的PHP程序所控制的。
估计上面说的你也没理解,或者可以直接上手试试吧。
2013-09-24 16:40:00
#9 andy80129
jake 发表于 2013-9-24 16:40 
cron是linux的定时服务,可以在随便一台linux上面设置。它也会定时执行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);
}
}
$$$$host = 'www.test.cn'; //下面的网址改成你要监控的网址
$$$$find = '湖北'; //包含的关键字
ignore_user_abort();
//即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
set_time_limit(0);
//执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去
$$$$interval=60*5;
//每隔5分钟运行
do{
if (!check($$$$host, $$$$find))
{
echo "error...";
}else{
echo "OK....";
}
sleep($$$$interval);//按设置的时间等待5分钟循环执行
}
while(true);
?>
2013-09-24 17:54:03
#10 jake
可以,
不过改进一下:中间的文件获取部分,可以直接用 file_get_contents(url) 就可以了。
2013-09-24 21:21:10
#11 andy80129
jake 发表于 2013-9-24 21:21 
可以,
不过改进一下:中间的文件获取部分,可以直接用 file_get_contents(url) 就可以了。 ...
谢谢,因为刚接触到PHP,很多函数还不知道。之前有查过file_get_contents这个函数~有文章说这个函数在碰到网站当机,取不到文件的时候,会超时~所以改用的fsockopen。也不知道对不对,哪个效率更高?您帮我看看这段代码还有别的问题没有?非常感觉您百忙中能关注到这个贴,耐心的回复。谢谢了~{:soso_e183:}
2013-09-25 08:41:04
#12 jake
andy80129 发表于 2013-9-25 08:41 
谢谢,因为刚接触到PHP,很多函数还不知道。之前有查过file_get_contents这个函数~有文章说这个函数在碰 ...
file_get_contents取不到内容,那就是对方网站挂了。其实它底层就是调fopen等函数的。
2013-09-25 09:48:02