要生成网站地图!一个文件中要有10000个节点!
我使用php simpleXML,在没有完全生成一个文件时,我怀疑simpleXML会把内存吃没了
然后我测试了一下!内存还可以,但CPU很高!有其它的办法吗?

解决方案 »

  1.   

    用sqlite3吧
    数据容量支持到T级,10000个节点不算什么
      

  2.   

    数据量大的话应该考虑用数据库,而不是XML。
    SQLite3是一个轻量级的数据库。
      

  3.   

    要生成网站地图,给搜索引擎看的。所以只能是xml格式文件。
    sqlite3怎么能处理成xml???
      

  4.   

    xml只适合小型数据存储,大了要用数据库
      

  5.   

    我写了一个递归函数function addElement(&$simpleXML,$arr){
    if(!is_array($arr)){
    return ;
    }
    foreach ($arr as $k=>$v){
    if(is_numeric($k) && is_array($v)){
    addElement($simpleXML,$v);//数字的索引可以解决xml节点重名的问题
    }elseif(is_array($v) && $k!="attr"){
    addElement($simpleXML->addChild($k),$v);
    }elseif (is_array($v) && $k=="attr"){
    foreach ($v as $s_k=>$s_v){
    $simpleXML->addAttribute($s_k,$s_v);//索引“attr”解决属性的问题
    }
    }else{
    $v = !empty($v) ? $v : " "; 
    if($k!="attr"){ $simpleXML->addChild($k,$v); }
    }
    }
    }这个函数可以把一个数组变成xml的一个节点。但$simpleXML对象会不会越来越大?
      

  6.   

    从我做过的一个不负责任的测试来看,XMLWriter/XMLReader 的效率在大数据量的时候表现是最好的。你不妨换成XMLWriter试一下。
      

  7.   


    xml大了,解析起来操作起来必然很占资源. 可以全部节点存sqlite3,需要输出的部分则读出数据来生成小点的xml.
      

  8.   

    也就是说像处理字符串一样,用php生成xml文件!