PHP-如何利用PHP监控网站运行状态?

PHP-如何利用PHP监控网站运行状态?

虐人心 发布于 2017-08-24 字数 169 浏览 1218 回复 3

使用外国的服务器说不定什么时候服务器就当掉了,网站无法访问对搜索引擎的蜘蛛会有影响。所以需要随时掌握网站服务器的状态。
如何使用PHP高效的监控网站?求代码和思路.

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

晚风撩人 2017-11-01 3 楼

思路,

<?php
ini_set("error_reporting","E_ALL & ~E_NOTICE");
function_exists('date_default_timezone_set') && date_default_timezone_set('Etc/GMT-8');
$stime = date("n月j日 H:i:s");
//即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
ignore_user_abort();
// 执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去
set_time_limit(0);
// 每隔5分钟运行
$interval=60*5;
do{
/* 监控的网址 */
$host ='www.baidu.com';
/* 下面的是网站首页源代码中的一段特殊字符串 */
$find ='baidu';
if (!check($host,$find)){
alert($host);
}
file_put_contents('put.txt',' Current Time: '.$stime);
if( $stop == 500 ) break;
// 等待5分钟
sleep($interval);
}while(true);

function check($host,$find){
$fp =fsockopen($host, 80,$errno,$errstr, 10);
if (!$fp)
{
echo "$errstr ($errno)n";
}else
{
$header ="GET / HTTP/1.1rn";
$header .="Host: $hostrn";
$header .="Connection: closernrn";
fputs($fp,$header);
while (!feof($fp))
{
@$str .=fgets($fp, 1024);
}
fclose($fp);
return (strpos($str,$find) !== false);
}
}

function alert($host)
{
mail('admin@office.net','监控项目 [a] 故障通知','监控项目 [yaoinfo( '.$host.' )] 于 '.$stime.' 不可用(无法连接服务器)');
}
function alertok($host)
{
mail('admin@office.net','监控项目 [b] 可用(200 OK)','监控项目 [yaoinfo( '.$host.' )] 于 '.$stime.' 可用(200 OK)');
}
?>

虐人心 2017-10-29 2 楼

针对你的需求,最简单的办法
1.在目标网站写一个文件,比如:http://www.xxx.com/status.txt
2.用CURL请求或者file_getcontent 获取status.txt的内容
3.如果连续几次获到不到的话,或者每次获取的时间比较长,就表示要不网络有问题,要不网站有问题。
4.进行邮件或短信报警

如果要获取更多信息监控的话:
1.通过SNMP监控服务器的系统性能,包括CPU使用率、内存使用率、磁盘空间使用率、网卡流量、磁盘I/O、进程数等。
2.Web Server状态

Nginx通过stub_status模块提供了标准的运行时状态页面
Apache,Lighttpd 通过mod_status模块提供了标准的运行时状态页面

3.MySQL的各项性能数据,包括查询吞吐率、查询缓存、索引缓存、并发连接、流量以及表锁定等
4.站点监控:Curl Url/Ping/FTP/DNS/TCP/UDP/SMTP等

偏爱自由 2017-10-04 1 楼

通过飞信接口或直接发邮件到139的邮箱,可以直接把服务器状态发送到用户手机里面。实现起来比较简单。具体 可以参考http://blog.s135.com/fetion_api/