PHP服务器状态监控实现程序
这两天抽空写了个网页服务器状态监控,看到有朋友说需要,那我就放出来吧。很简单的东西。
使用方法
打开压缩包里面的status.php文件。编辑这里的内容为你自己的邮箱信息。
代码如下 | 复制代码 |
$mail->Host = 'smtp.exmail.qq.com'; // SMTP 服务器 |
更改这里的内容为你要监控的IP
代码如下 | 复制代码 |
$server_ip_list = array( |
然后访问你http://yourdomain.com/status.php文件,即可看到当前服务器状态并且自动发送邮件到你设置的邮箱。如果需要自动监控,请添加Cron任务或者使用什么监控宝之类的!
完整代码
代码如下 | 复制代码 |
<?php */ if (!$fp) { $i++; ?> |
注意:
include './smtp/class.smtp.php';
include './smtp/class.phpmailer.php';
文件可以下载phpmailer包然后我们在包里面这两个文件复制出来然后即可使用了。
ps:这个只是一个非常的简单的不能很好的监控到服务器了,现在有很多成熟的免费产品都可以更好的达到我们要求,如dnspod里面有一个D监控了,然后我们就可以操作。
php中有很多种远程请求的方法,本教程中我们主要讲6种最常用的GET和POST请求发送方法,更多的php远程请求大家可以到网站多找找,也可以查php手册。1、用file_get_contents 以get方式获取内容:
代码如下 | 复制代码 |
<?php $url='http://www.ido321.com/'; $html = file_get_contents($url); echo $html; ?> |
2、用fopen打开url,用get方式获取
代码如下 | 复制代码 |
$fp = fopen($url, 'r'); stream_get_meta_data($fp); while(!feof($fp)) { $result .= fgets($fp, 1024); } echo "url body: $result"; fclose($fp); |
3、用file_get_contents 以post方式获取内容:
代码如下 | 复制代码 |
$data = array ('foo' => 'bar'); $data = http_build_query($data); $opts = array ( 'http' => array ( 'method' => 'POST', 'header'=> "Content-type: application/x-www-form-urlencodedrn" . 'Content-Length: ' . strlen($data) . 'rn', 'content' => $data ) ); $context = stream_context_create($opts); $html = file_get_contents('http://localhost/e/admin/test.html', false, $context); echo $html; |
4、用fsockopen函数打开url,以get方式获取完整的数据,包括header和body,fsockopen需要 PHP.ini 中 allow_url_fopen 选项开启
代码如下 | 复制代码 |
function get_url ($url,$cookie=false) { $url = parse_url($url); $query = $url[path].'?'.$url[query]; echo 'Query:'.$query; $fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30); if (!$fp) { return false; } else { $request = 'GET $query HTTP/1.1rn'; $request .= 'Host: $url[host]rn'; $request .= 'Connection: Closern'; if($cookie) $request.='Cookie: $cookien'; $request.='rn'; fwrite($fp,$request); while(!@feof($fp)) { $result .= @fgets($fp, 1024); } fclose($fp); return $result; } } //获取url的html部分,去掉header function GetUrlHTML($url,$cookie=false) { $rowdata = get_url($url,$cookie); if($rowdata) { $body= stristr($rowdata,'rnrn'); $body=substr($body,4,strlen($body)); return $body; } return false; } |
5、用fsockopen函数打开url,以POST方式获取完整的数据,包括header和body
代码如下 | 复制代码 |
function HTTP_Post($URL,$data,$cookie, $referrer='') { // parsing the given URL $URL_Info=parse_url($URL); // Building referrer if($referrer=='') // if not given use this script as referrer $referrer='111'; // making string from $data foreach($data as $key=>$value) $values[]='$key='.urlencode($value); $data_string=implode('&',$values); // Find out which port is needed – if not given use standard (=80) if(!isset($URL_Info['port'])) $URL_Info['port']=80; // building POST-request: $request.="POST ".$URL_Info['path']." HTTP/1.1n"; $request.="Host: ".$URL_Info['host']."n"; $request.="Referer: $referern"; $request.="Content-type: application/x-www-form-urlencodedn"; $request.='Content-length: '.strlen($data_string)."n"; $request.='Connection: closen'; $request.='Cookie: $cookien'; $request.='n'; $request.=$data_string.'n'; $fp = fsockopen($URL_Info['host'],$URL_Info['port']); fputs($fp, $request); while(!feof($fp)) { $result .= fgets($fp, 1024); } fclose($fp); return $result; } |
6、使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展
代码如下 | 复制代码 |
$ch = curl_init(); $timeout = 5; curl_setopt ($ch, CURLOPT_URL, ‘http://www.ido321.com/'); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $file_contents = curl_exec($ch); curl_close($ch); echo $file_contents; |
先看文件列表:
代码如下 | 复制代码 |
$dir=’ass’;
$dp = dir($dir); while ($file = $dp ->read()){ $filename=$dir.’/’.$file; if($file!=’.'&&$file!=’..’){ $key=filectime($filename)*1000+rand(100,999); $files[strval($key)]=$filename; } } echo ‘<pre>’; print_r($files); ksort($files); print_r($files); $keys = range(1,count($files)); $arr=array_combine($keys,$files); print_r($arr); echo ‘</pre>’; |
打印结果:
代码如下 | 复制代码 |
Array ( [1] => 第十五课.ass [2] => 第二十一课.ass [3] => 第二十课.ass [4] => 第九课.ass [5] => 第二十六课.ass [6] => 第四课.ass [7] => 第十七课.ass [8] => 第二十二课.ass [9] => 第七课.ass [10] => 第三课.ass [11] => 第十八课.ass ) |
Html2Article-php实现的提取网页正文部分,最近研究百度结果页的资讯采集,其中关键环节就是从采集回的页面中提取出文章。
因为难点在于如何去识别并保留网页中的文章部分,而且删除其它无用的信息,并且要做到通用化,不能像火车头那样根据目标站来制定采集规则,因为搜索引擎结果中有各种的网页。
抓回一个页面的数据,如何匹配出正文部分,郑晓在下班路上想了个思路是:
1. 提取出body标签部分–>剔除所有链接–>剔除所有script、注释–>剔除所有空白标签(包括标签内不含中文的)–>获取结果。
2. 直接匹配出非链接的、 符合在div、p、h标签中的中文部分???
还是会有不少其它多余信息啊,比如底部信息等。。 如何搞?不知道大家有木有什么思路或建议?
这个类是从网上找到的一个php实现的提取网页正文部分的算法,郑晓在本地也测试了下,准确率非常高。
代码如下 | 复制代码 |
<?php class Readability { // DOM 解析类目前只支持 UTF-8 编码 // 当判定失败时显示的内容 // DOM 解析类(PHP5 已内置) // 需要解析的源代码 // 章节的父元素列表 // 需要删除的标签 private $junkTags = Array("style", "form", "iframe", "script", "button", "input", "textarea", // 需要删除的属性
// DOM 解析类只能处理 UTF-8 格式的字符 // 预处理 HTML 标签,剔除冗余的标签等 // 生成 DOM 解析类 foreach ($this->DOM->childNodes as $item) { // insert proper
// Replace all doubled-up <BR> tags with <P> tags, and remove fonts. // @see https://github.com/feelinglucky/php-readability/issues/7 return trim($string);
/** $i = 0; return $RootNode; /** // Study all the paragraphs and find the chunk that has the best score. // Look for a special classname // Look for a special ID // Add a point for the paragraph found // 保存父元素的判定得分 // 保存章节的父元素,以便下次快速获取 $topBox = null; if ($contentScore && $contentScore > $orgContentScore) {
if ($titleNodes->length return null;
if ($images->length && $leadImage = $images->item(0)) { return null;
// 获取页面标题 // 获取页面主内容 // 删除不需要的标签 // 删除不需要的属性 $content = mb_convert_encoding($Target->saveHTML(), Readability::DOM_DEFAULT_CHARSET, "HTML-ENTITIES"); // 多个数据,以数组的形式返回 function __destruct() { } |
使用起来也非常简单,实例化时传入网页的html源码和相应的编码,然后直接调用其getContent方法即可返回提取到的正文部分,提取出的文章中可能还会含有少部分链接,可以自己后期再修改
需求是这样的:
找到数组中所有可能的指定长度的组合,要求没有重复。
方法一:
代码如下 | 复制代码 |
function getCombinationToString($arr,$m){ $temp_list2 = getCombinationToString($arr, $m); var_dump($t); |
执行时间:238ms。
方法二:
代码如下 | 复制代码 |
function getCombinAryByNum( $arr, $num,$t=array()) { $arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18); var_dump($ss); |
执行时间:710ms。
相关文章
- 简单的php获取linux服务器状态的代码,不多说-直接上函数:复制代码 代码如下:function get_used_status(){ $fp = popen('top -b -n 2 | grep -E "^(Cpu|Mem|Tasks)"',"r");//获取某一时刻系统cpu和内存使用情况 $rs =...2014-05-31
- 这篇文章主要介绍了Springboot+TCP监听服务器搭建过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-28
- 前一段时间使用NetStat命令查看服务器端口时,发现服务器udp端口开放了好多,最少在1000个以上,当时事情比较多,没有管它,今天终于有点时间,仔细检查了一下,排除了这个问题. ...2016-01-27
- “主机,用户名,密码”得到连接、“数据库,sql,连接”得到结果,最后是结果的处理显示。当然,数据库连接是扩展库为我们完成的,我们能做的仅仅是处理结果而已。...2013-09-29
解决HttpPost+json请求---服务器中文乱码及其他问题
这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22- 这篇文章主要介绍了Hyper-V尝试连接到服务器出错无效类的解决方法,需要的朋友可以参考下...2016-09-28
- 这篇文章主要介绍了mac使用Shell(终端)SSH连接远程服务器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-11
- 这篇文章主要为大家详细介绍了js实现上传图片到服务器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-04-11
c# HttpWebRequest通过代理服务器抓取网页内容应用介绍
在C#项目开发过程中可能会有些特殊的需求比如:用HttpWebRequest通过代理服务器验证后抓取网页内容,要想实现此方法并不容易,本文整理了一下,有需求的朋友可以参考下...2020-06-25- 这篇文章主要为大家详细介绍了uploader秒传图片到服务器的完整代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-04-27
- 这篇文章主要介绍了Linux环境下nginx搭建简易图片服务器,需要的朋友可以参考下...2016-01-27
- 最近公司的网站升级Windows 2016服务器,选择安装了最新版的Windows 2016,以前使用Windows服务器还是Windows 2003系统,发现变化还是挺多的,依次记录下来以备后面查阅...2020-10-05
使用node-media-server搭建一个简易的流媒体服务器
这篇文章主要介绍了使用node-media-server搭建一个简易的流媒体服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20- 阿里云免费套餐再次升级,提供更多产品,更久时长的使用,本次活动针对个人用户和企业用户,不过仅限新用户申请,想要了解更多,下面就来简单地了解一下活动规则 阿里云免费...2017-07-06
- 首先,主要是ecmall使用的phpmailer版本太低,不支持加密连接。然后,得对相应代码做一定调整。1. 覆盖phpmailer请从附件进行下载: 复制代码 代码如下:http://cywl.jb51.net:81/201405/yuanma/ecmall_phpmailer_lib(jb51.n...2014-05-31
- 这篇文章主要介绍了golang DNS服务器的简单实现操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-01
- 这篇文章主要以图文结合的方式详细介绍了本地Windows 78上IIS服务器搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ...2017-07-06
- 这篇文章主要为大家详细介绍了C#如何连接服务器共享文件夹,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 偶这里是针对的WIN平台,现在的站长大部分都用WIN2003,相信没几个站长用低版本儿的操作系统的!...2016-01-27
- 由于 ZooKeeper 便捷的使用方式、卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分布式系统中。这篇文章主要介绍了史上最便捷搭建Zookeeper服务器的方法,需要的朋友可以参考下...2021-05-07