www.gusucode.com > 网猫影视系统NetMao Movie 4.6.6 开源版源码程序 > upload/admin/part10.inc.php

    <?php
/*
*######################################
* Netmao Movie 4.x - NetMao Movie System
* Copyright (c) 2007-2008 NetMao.cn
* For further information go to http://www.netmao.cn/
* This copyright notice must stay intact for use.
*######################################
*/
if(!defined('IN_NetMao') || !isset($PHP_SELF) || !preg_match("/[\/\\\\]nmadmin\.php$/", $PHP_SELF)) exit('Access Denied');

$spider = $_NCACHE['settings'][spiderfile];
$spiderfile = './templates/tools/'.$spider.'.ctrl.php';

if(!is_readable($spiderfile)) {
    exit("Please upload $spiderfile .");
}

@include NetMao_ROOT.$spiderfile;

if($action=="spider"){
    nmcptpl('spider');
}
if($action=="spider_multi"){
    $auto = $auto ? $auto : '0';
    $next = FALSE;
    $result = $db->query("select * from {$tablepre}codes where isok='0' limit 0,1");
    $r=$db->fetch_array($result);
    if($r[urlid]){
        $next = TRUE;$urlid = $r[urlid];$geturl = $r[url];
        $code = caiji_info($geturl);
        nmcptpl('spider');
    }
    if(!$next){
	    nmsg("采集已经全部完成","?action=spider");
	}
}

if($action=="spider_insert"){
    if($code){
        preg_match_all("/<nm:([^>]+)>([\s\S]*?)<\/nm>/",$code,$matchs);
        for($i=0;$i<count($matchs[1]);$i++){
            $labels[$matchs[1][$i]]=$matchs[2][$i];
        }
        unset($matchs);
        $name=trim($labels[name]);
        $filecontent=trim($labels[filecontent]);
		$fileaddress=trim($labels[fileaddress]);

		if($fileaddress==''){
            $db->query("UPDATE {$tablepre}codes SET code='$code',isok='1' WHERE urlid = '$urlid'");
			nmsg("本次采集数据已经入库,正在进行下次采集。","?action=spider_multi&auto=$auto");
		}else{
            $status=count(explode("\r",$fileaddress))+1;
			if(is_array($labels)) foreach($labels as $c_key=>$c_val){
                if($c_key!="fileaddress"){
                    $newcode=$newcode."<nm:$c_key>$c_val</nm>";
				}
			}
            c_gengxin('c_status',$status);
            c_gengxin('c_urlid',$urlid);
			c_gengxin('c_name',$name);
			c_gengxin('c_info',$newcode);
            c_gengxin('c_fileaddress',$fileaddress);
			c_gengxin('c_filecontent','');
            nmsg("本次采集数据已经进入缓存,正在进入子采集。","?action=spider_insert&auto=$auto");
		}
	}else{
        $data=c_huancun();
        if($data[c_status] < 1){
	        nmsg("缓存采集数据已经入库,正在进入下次采集","?action=spider_multi&auto=$auto");
	    }elseif($data[c_status] == 1){
		    if(!$suc_urlid){
			    $suc_code=$data[c_info]."<nm:filecontent>".$data[c_filecontent]."</nm>";
			    $suc_urlid=$data[c_urlid];
                nmcptpl('spider');
		    }else{
			    $db->query("UPDATE {$tablepre}codes SET code='$suc_code', isok='1' WHERE urlid='$suc_urlid'");
			    c_gengxin('c_status','0');
			    nmsg("本次采集数据已经入库,正在进入下次采集。","?action=spider_multi&auto=$auto");
			}
	    }else{
		    if(!$new_status){
			    $cur_urlid=$data[c_urlid];
				$cur_fileaddress=explode("\r",$data[c_fileaddress]);
				$cur_xb=count($cur_fileaddress)+1-$data[c_status];
				$cur_geturl=trim($cur_fileaddress[$cur_xb]);
				$cur_filecontent=trim(caiji_soninfo($cur_geturl));

				if(($cur_filecontent=="error" || $cur_filecontent=="") && $sonerr<=2){
				    $sonerr = $sonerr ? $sonerr+1 : 1;
				    nmsg("本次子采集出错,智能进行重复子采集尝试。","?action=spider_insert&auto=$auto&sonerr=$sonerr");
				}elseif(($cur_filecontent=="error" || $cur_filecontent=="") && $sonerr>2){
			        c_gengxin('c_status','0');
			        nmsg("智能忽略本次采集,正在进入下次采集。","?action=spider_insert&code=error&urlid= $cur_urlid&auto=$auto");
				}

				$new_filecontent=trim($data[c_filecontent]."\r".$cur_filecontent);
				$new_status=$data[c_status]-1;
                nmcptpl('spider');
			}else{
				c_gengxin('c_filecontent',$new_filecontent);
				c_gengxin('c_status',$new_status);
				nmsg("本次子采集信息已经进入缓存,正在进入下次子采集。","?action=spider_insert&auto=$auto");
			}
		}
	}
}

function c_huancun(){
    global $db,$tablepre;
    $query=$db->query("select * from {$tablepre}settings where variable in ('c_status','c_urlid','c_name','c_info','c_fileaddress','c_filecontent')");
    while($setting = $db->fetch_array($query)) {
        $data[$setting['variable']] = trim($setting['value']);
    }
	return $data;
}

function c_gengxin($variable,$value){
    global $db,$tablepre;
	$db->query("REPLACE INTO {$tablepre}settings (variable, value) VALUES ('$variable', '$value')");
}
?>