php怎么处理数据量大的xml? 要生成网站地图!一个文件中要有10000个节点!我使用php simpleXML,在没有完全生成一个文件时,我怀疑simpleXML会把内存吃没了然后我测试了一下!内存还可以,但CPU很高!有其它的办法吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用sqlite3吧数据容量支持到T级,10000个节点不算什么 数据量大的话应该考虑用数据库,而不是XML。SQLite3是一个轻量级的数据库。 要生成网站地图,给搜索引擎看的。所以只能是xml格式文件。sqlite3怎么能处理成xml??? xml只适合小型数据存储,大了要用数据库 我写了一个递归函数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对象会不会越来越大? 从我做过的一个不负责任的测试来看,XMLWriter/XMLReader 的效率在大数据量的时候表现是最好的。你不妨换成XMLWriter试一下。 xml大了,解析起来操作起来必然很占资源. 可以全部节点存sqlite3,需要输出的部分则读出数据来生成小点的xml. 也就是说像处理字符串一样,用php生成xml文件! 优化一句SQL语句! 关于php类私有变量和获取的变量的问题 unlink不能删除中文文件名的文件 php cookie 无效问题 怎么保证网站的附件不被非法下载 php执行shell脚本问题 人气不旺,想作些友情连接,或性价比高的广告,不知如何下手? 请人帮忙,php里怎么根据一个符号分割字符串。 php4中如何用fasttemplate! 记录删除的实现 php发送html电子邮件 求一维数组中最大的值
数据容量支持到T级,10000个节点不算什么
SQLite3是一个轻量级的数据库。
sqlite3怎么能处理成xml???
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对象会不会越来越大?
xml大了,解析起来操作起来必然很占资源. 可以全部节点存sqlite3,需要输出的部分则读出数据来生成小点的xml.