ホームページ >php教程 >PHP源码 >skymvc网站测试之页面测试,爬行所有页面

skymvc网站测试之页面测试,爬行所有页面

WBOY
WBOYオリジナル
2016-06-02 09:14:121447ブラウズ
跳至 [1] [全屏预览]
<?php
/******
*Author 雷日锦
*本代码在skymvc中使用 http://www.skymvc.com
*页面测试 自动爬行所有页面
*******/
class test_pageControl extends skymvc{
	
	public $para=array("id","catid","userid");
	public $action=array("default","list","show","add","my");
	public $id=123;
	public $per_page=1;
	public $maxThreads=10;
	public $token="1234";
	public $site="http://skymvc.skymvc.com/index.php?";
	public function __construct(){
		parent::__construct();
	}
	
	public function onDefault(){
		
	}
	
	public function getTables(){
		$res=M("article")->query("show tables");
		$data=M("article")->fetch_array(PDO::FETCH_NUM);
		foreach($data as $k=>$t){
			$tables[]=str_replace(TABLE_PRE,"",$t[0]);
		}
		return $tables;
	}
	
	public function onSetAction($a=array()){
		 
		if(!empty($a)){
			$this->action=array_merge($this->action,$a);
		}		
		 

	}
	public function onSetPara($a=array()){
		 
		if(!empty($a)){
			$this->para=array_merge($this->para,$a);
		}		
	 
	}
	
	public function getUrls(){
		$tables=$this->getTables();
		$para="";
		foreach($this->para as $q){
			$para.="&$q=".$this->id;
		}
		$para.="&token=".$this->token."&per_page=".$this->per_page;
		foreach($tables as $m){
			$uk=0;
			foreach($this->action as $k=>$a){
				$urls[]=$this->site."m=$m&a=$a".$para;
				if($k%$this->maxThreads==($this->maxThreads-1)){
					$uk++;
				}
			}
		}
		return $urls;
	}
	 
	public function onStart(){
		set_time_limit(0);
		ob_implicit_flush(true);
		$urls=$this->getUrls();
		$uk=0;
		foreach($urls as $k=>$url){
			$purls[$uk][]=$url;
			if($k%$this->maxThreads==($this->maxThreads-1)){
				$uk++;
			}
		}
		echo "开始<br>";
		foreach($purls as $k=>$urls){
			echo "第".$k."部分<br>";
			flush();
			@ob_flush();
			$this->loadClass("spider");
			$this->spider->start($urls,function($data){
				echo $data['url']." <br>";
				flush();
				@ob_flush();
			});
		}
		echo "测试结束";
	}
	
}

?>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。