有偿找人优化个PHP代码

查看 108|回复 11
作者:锦皓   
SetQuery("Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath from `#@__arctype` where reid='".$ID."' and ishidden1 order by id,sortrank");
    $dsql->execute($ID);
    while($row_class = $dsql->getarray($ID)){
    ShowMsg($ID);
        $SonClass .= "\n";
        $iClassUrl = $tl->GetOneTypeUrl($row_class);
        $iClassUrl = count(explode("http://",$iClassUrl))>1 ? $iClassUrl: $cfg_basehost.$iClassUrl;
        $SonClass .= "".$iClassUrl."\n";
        $SonClass .= "".date("Y-m-d",time())."T".date("H:i:s+08:00",time())."\n";
        $SonClass .= "daily\n";
        $SonClass .= "0.9\n";
        $SonClass .= "
\n";
        getSonClass($row_class["id"]);
    }
    return $SonClass;
}
function MK_Dir($path,$pathname){
    if(!file_exists($path)){
        createDir(dirname($path));
        mkdir($path, 0775);
        ShowMsg("成功创建目录".$pathname,"javascript:;");        
    }
}
if(empty($dopost)){
    include DEDEADMIN.'/templets/google_sitemap.htm';
}else if($dopost=="make"){
    //取得数目
    $dsql->SetQuery("Select count(*) as mycount from `#@__archives` where ismake=1");
    $dsql->execute();
    $row_sum = $dsql->getarray();
    if(($sumurl > $row_sum['mycount']) || empty($sumurl)){
        $sumurl = $row_sum['mycount'];
    }
    $pagenum = intval($sumurl/$perpageurl);
        $pagenumber = $pagenum;
    if($pagenum \n";
    $sitemap_index .= "\n";
    for($i=0; $i \n";
        $sitemap_index .= "".$cfg_basehost."/sitemap/sitemap_$i.xml\n";
        $sitemap_index .= "".date("Y-m-d",time())."T".date("H:i:s+08:00",time())."\n";
        $sitemap_index .= "\n";
    }
    $sitemap_index .= "";
    $indexmap = fopen(dirname(__FILE__)."/../".$filename."/sitemap_index.xml", "w");
    fwrite($indexmap, $sitemap_index);
    fclose($indexmap);
    ShowMsg("成功生成地图索引:/".$filename."/sitemap_index.xml","javascript:;");
    //首页、栏目列表sitemap_0.xml
    $sitemap_1 = "\n";
    $sitemap_1 .= "\n";
    $sitemap_1 .= "\n";
    $sitemap_1 .= "".$cfg_basehost."/\n";
    $sitemap_1 .= "".date("Y-m-d",time())."T".date("H:i:s+08:00",time())."\n";
    $sitemap_1 .= "always\n";
    $sitemap_1 .= "1.0\n";
    $sitemap_1 .= "
\n";
    $dsql->SetQuery("Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath from `#@__arctype` where ishidden1 order by id,sortrank");
    $dsql->execute();
    while($row_type = $dsql->getarray()){
        $sitemap_1 .= "\n";
        $iTypeUrl = $tl->GetOneTypeUrl($row_type);
        $iTypeUrl = count(explode("http://",$iTypeUrl))>1 ? $iTypeUrl : $cfg_basehost.$iTypeUrl;
        $sitemap_1 .= "".$iTypeUrl."\n";
        $sitemap_1 .= "".date("Y-m-d",time())."T".date("H:i:s+08:00",time())."\n";
        $sitemap_1 .= "daily\n";
        $sitemap_1 .= "0.9\n";
        $sitemap_1 .= "
\n";
        //$sitemap_1 .= getSonClass($row_type["id"]);
    }
    $sitemap_1 .= "
";
    $classmap = fopen(dirname(__FILE__)."/../".$filename."/sitemap_0.xml", "w");
    fwrite($classmap, $sitemap_1);
    fclose($classmap);
    ShowMsg("成功生成首页、栏目列表地图:/".$filename."/sitemap_0.xml","javascript:;");
    //所有文章sitemap_(1-*).xml
    $limit_st = 0;
    for($page_num=1; $page_num\n";
        $sitemap .= "\n";
        $query = "Select arc.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
        from `#@__archives` arc LEFT JOIN `#@__arctype` tp ON arc.typeid=tp.id
        where arc.ismake=1 order by pubdate limit $limit_st,$perpageurl";
        $dsql->SetQuery($query);
        $dsql->execute();
        while($row_url = $dsql->getarray()){
            //自动识别动态页和静态页
            $row_url["arcurl"] = GetFileUrl($row_url["id"],$row_url["typeid"],$row_url["senddate"],$row_url["title"],$row_url["ismake"],$row_url["arcrank"],$row_url["namerule"],$row_url["typedir"],$row_url["money"],$row_url['filename'],$row_url["moresite"],$row_url["siteurl"],$row_url["sitepath"]);
            $row_url["fullurl"] = $cfg_basehost.$row_url["arcurl"];
            if($GLOBALS['cfg_multi_site'] == 'Y') $row_url["fullurl"] = $row_url["arcurl"];
            $link = $row_url["fullurl"];
            $times = $row_url['senddate'] ;
            $lastmodified=date("Y-m-d",$times)."T".date("H:i:s+08:00",$times);
            //生成更新频率和更新指数

                $priority="0.8";
            //生成sitemap
            $sitemap .= "\n";
            $sitemap .= "$link\n";
            $sitemap .= "$lastmodified\n";
            $sitemap .= "$changefreq\n";
            $sitemap .= "$priority\n";
            $sitemap .= "
\n";
        }
        $sitemap .= "
";
        $urlmap = fopen(dirname(__FILE__)."/../".$filename."/sitemap_".$page_num.".xml","w");
        fwrite($urlmap,$sitemap);
        fclose($urlmap);
        ShowMsg("成功生成文章列表地图:/".$filename."/sitemap_".$page_num.".xml
共".$row_sum['mycount']."条记录,每页".$perpageurl."条,当前".$page_num."/".$pagenumber."页","javascript:;");
        $limit_st = $limit_st + $perpageurl;        
    }
    ShowMsg("全部生成成功!","javascript:;");
    exit();
}
?>
生成老是会卡住。。大概一百多万条数据。。

地图, 找人

三八猪网站   
看不懂。  给你顶一下哈
红橙文化传媒   
看不懂。  给你顶一下哈
只为书生   
织梦的程序?你把这个拆开生成看看
锦皓
OP
  
只为书生 发表于 2023-9-25 17:14
织梦的程序?你把这个拆开生成看看

不好拆吧。
只为书生   
锦皓 发表于 2023-9-25 17:15
不好拆吧。

明显可以拆啊,自己改写按照分类生成吧!你可能数据量大,生成出问题的
锦皓
OP
  
只为书生 发表于 2023-9-25 17:21
明显可以拆啊,自己改写按照分类生成吧!你可能数据量大,生成出问题的

怎么拆啊。
mike   
[ol]
  • SetQuery("Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath from `#@__arctype` where reid='".$ID."' and ishidden1 order by id,sortrank");
  •     $dsql->execute();
  •     while($row_class = $dsql->getarray($ID)){
  •         ShowMsg($ID);
  •         $SonClass .= "\n";
  •         $iClassUrl = $tl->GetOneTypeUrl($row_class);
  •         $iClassUrl = count(explode("http://",$iClassUrl)) > 1 ? $iClassUrl : $GLOBALS['cfg_basehost'].$iClassUrl;
  •         $SonClass .= "".$iClassUrl."\n";
  •         $SonClass .= "".date("Y-m-d",time())."T".date("H:i:s+08:00",time())."\n";
  •         $SonClass .= "daily\n";
  •         $SonClass .= "0.9\n";
  •         $SonClass .= "\n";
  •         $SonClass .= getSonClass($row_class["id"], $tl);
  •     }
  •     return $SonClass;
  • }
  • function MK_Dir($path,$pathname){
  •     if(!file_exists($path)){
  •         createDir(dirname($path));
  •         mkdir($path, 0775);
  •         ShowMsg("成功创建目录".$pathname,"javascript:;");
  •     }
  • }
  • if(empty($dopost)){
  •     include DEDEADMIN.'/templets/google_sitemap.htm';
  • } else if($dopost == "make") {
  •     //取得数目
  •     $dsql->SetQuery("Select count(*) as mycount from `#@__archives` where ismake=1");
  •     $dsql->execute();
  •     $row_sum = $dsql->getarray();
  •     if(($sumurl > $row_sum['mycount']) || empty($sumurl)){
  •         $sumurl = $row_sum['mycount'];
  •     }
  •     $pagenum = intval($sumurl/$perpageurl);
  •     $pagenumber = $pagenum;
  •     if($pagenum \n";
  •     $sitemap_index .= "\n";
  •     for($i=0; $i \n";
  •         $sitemap_index .= "".$GLOBALS['cfg_basehost']."/sitemap/sitemap_$i.xml\n";
  •         $sitemap_index .= "".date("Y-m-d",time())."T".date("H:i:s+08:00",time())."\n";
  •         $sitemap_index .= "\n";
  •     }
  •     $sitemap_index .= "";
  •     $indexmap = fopen(dirname(__FILE__)."/../".$filename."/sitemap_index.xml", "w");
  •     fwrite($indexmap, $sitemap_index);
  •     fclose($indexmap);
  •     ShowMsg("成功生成地图索引:[url=".$GLOBALS[]/".$filename."/sitemap_index.xml[/url]","javascript:;");
  •    
  •     //首页、栏目列表sitemap_0.xml
  •     $sitemap_1 = "\n";
  •     $sitemap_1 .= "\n";
  •     $sitemap_1 .= "\n";
  •     $sitemap_1 .= "".$GLOBALS['cfg_basehost']."/\n";
  •     $sitemap_1 .= "".date("Y-m-d",time())."T".date("H:i:s+08:00",time())."\n";
  •     $sitemap_1 .= "always\n";
  •     $sitemap_1 .= "1.0\n";
  •     $sitemap_1 .= "\n";
  •    
  •     // 获取栏目数据(优化)
  •     $arctypeData = [];
  •     $dsql->SetQuery("Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath from `#@__arctype` where ishidden1 order by id,sortrank");
  •     $dsql->execute();
  •     while($row_type = $dsql->getarray()){
  •         $arctypeData[] = $row_type; // 保存到数组中,避免多次查询数据库
  •     }
  •    
  •     foreach($arctypeData as $row_type) {
  •         $sitemap_1 .= "\n";
  •         $iTypeUrl = $tl->GetOneTypeUrl($row_type);
  •         $iTypeUrl = count(explode("http://",$iTypeUrl)) > 1 ? $iTypeUrl : $GLOBALS['cfg_basehost'].$iTypeUrl;
  •         $sitemap_1 .= "".$iTypeUrl."\n";
  •         $sitemap_1 .= "".date("Y-m-d",time())."T".date("H:i:s+08:00",time())."\n";
  •         $sitemap_1 .= "daily\n";
  •         $sitemap_1 .= "0.9\n";
  •         $sitemap_1 .= "\n";
  •         //$sitemap_1 .= getSonClass($row_type["id"]);
  •     }
  •     $sitemap_1 .= "";
  •     $classmap = fopen(dirname(__FILE__)."/../".$filename."/sitemap_0.xml", "w");
  •     fwrite($classmap, $sitemap_1);
  •     fclose($classmap);
  •     ShowMsg("成功生成首页、栏目列表地图:[url=".$GLOBALS[]/".$filename."/sitemap_0.xml[/url]","javascript:;");
  •    
  •     //所有文章sitemap_(1-*).xml
  •     $limit_st = 0;
  •     for($page_num=1; $page_num\n";
  •         $sitemap .= "\n";
  •         
  •         $query = "Select arc.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
  •         from `#@__archives` arc LEFT JOIN `#@__arctype` tp ON arc.typeid=tp.id
  •         where arc.ismake=1 order by pubdate limit $limit_st,$perpageurl";
  •         $dsql->SetQuery($query);
  •         $dsql->execute();
  •         while($row_url = $dsql->getarray()){
  •             //自动识别动态页和静态页
  •             $row_url["arcurl"] = GetFileUrl($row_url["id"],$row_url["typeid"],$row_url["senddate"],$row_url["title"],$row_url["ismake"],$row_url["arcrank"],$row_url["namerule"],$row_url["typedir"],$row_url["money"],$row_url['filename'],$row_url["moresite"],$row_url["siteurl"],$row_url["sitepath"]);
  •             $row_url["fullurl"] = $GLOBALS['cfg_basehost'].$row_url["arcurl"];
  •             if($GLOBALS['cfg_multi_site'] == 'Y') $row_url["fullurl"] = $row_url["arcurl"];
  •             $link = $row_url["fullurl"];
  •             $times = $row_url['senddate'] ;
  •             $lastmodified=date("Y-m-d",$times)."T".date("H:i:s+08:00",$times);
  •             //生成更新频率和更新指数
  •             $priority="0.8";
  •             
  •             //生成sitemap
  •             $sitemap .= "\n";
  •             $sitemap .= "$link\n";
  •             $sitemap .= "$lastmodified\n";
  •             $sitemap .= "$changefreq\n";
  •             $sitemap .= "$priority\n";
  •             $sitemap .= "\n";
  •         }
  •         
  •         $sitemap .= "";
  •         $urlmap = fopen(dirname(__FILE__)."/../".$filename."/sitemap_".$page_num.".xml","w");
  •         fwrite($urlmap,$sitemap);
  •         fclose($urlmap);
  •         ShowMsg("成功生成文章列表地图:[url=".$GLOBALS[]/".$filename."/sitemap_".$page_num.".xml[/url]
    共".$row_sum['mycount']."条记录,每页".$perpageurl."条,当前".$page_num."/".$pagenumber."页","javascript:;");
  •         $limit_st = $limit_st + $perpageurl;
  •     }
  •    
  •     ShowMsg("全部生成成功!","javascript:;");
  •     exit();
  • }
  • ?>[/ol]复制代码给你做了一下优化,试试看,
  • 锦皓
    OP
      
    Mike 发表于 2023-9-25 17:26
    给你做了一下优化,试试看,

    ***内容可能违规暂时被隐藏***
    散落漫天   
    [ol]
  • GetOne("SELECT COUNT(*) FROM `#@__archives` WHERE arcrank>-1 AND ishidden=0");
  •     $pagesize = ceil($totalcount['COUNT(*)'] / $sitemap_max_count);
  •     // 生成地图索引文件
  •     $sitemap_index_content = '';
  •     $sitemap_index_content .= '';
  •     for ($i=0; $i ';
  •         $sitemap_index_content .= ''.$sitemap_url.'/'.$filename.'';
  •         $sitemap_index_content .= ''.date('Y-m-d').'';
  •         $sitemap_index_content .= '';
  •         // 生成地图文件
  •         $arcQuery = "SELECT arc.id,arc.title,arc.senddate,tp.typedir,tp.typename,tp.corank,arc.click,arc.description FROM `#@__archives` AS arc LEFT JOIN `#@__arctype` AS tp ON arc.typeid=tp.id WHERE arc.arcrank>-1 AND arc.ishidden=0 ORDER BY arc.id DESC";
  •         $arcQuery = $dsql->SetQuery($arcQuery);
  •         $arcResult = $dsql->Execute('arcList', $arcQuery);
  •         $item_count = 0; // 当前地图文件已生成的文章数
  •         $xml_content = '';
  •         $xml_content .= '';
  •         while ($row = $dsql->GetArray('arcList')) {
  •             // 获取文章URL
  •             $artUrl = GetFileUrl($row['id'], $row['typeid'], $row['senddate'], $row['title'], $row['ismake'], $row['arcrank'], $row['namerule'], $row['typedir'], $row['money'], $row['filename'], $row['moresite'], $row['siteurl']);
  •             if ($item_count '.$artUrl.'';
  •                 $xml_content .= ''.date('Y-m-d', strtotime($row['senddate'])).'';
  •                 $xml_content .= 'weekly';
  •                 $xml_content .= '0.8';
  •                 $xml_content .= '';
  •                 $item_count++;
  •             } else {
  •                 break;
  •             }
  •         }
  •         $xml_content .= '';
  •         // 将当前地图文件写入缓存
  •         $cache_key = 'sitemap_'.$i;
  •         $cache->set($cache_key, $xml_content);
  •         unset($arcResult);
  •     }
  •     $sitemap_index_content .= '';
  •     // 将地图索引文件写入磁盘
  •     $sitemap_index_file = $sitemap_dir . '/' . 'sitemap_index.xml';
  •     file_put_contents($sitemap_index_file, $sitemap_index_content);
  •     echo "";
  • }
  • ?>[/ol]复制代码试试这个呢
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部