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文件! 学习PHP应当注意些什么? KYPHPV1.1发布,欢迎大家下载 如何将textarea输入的每行文本单独赋值给一个数组? MySQL数据库中的T表subject列有大量的恶意脚本 奇怪的图片显示问题 如何将美国时间转化为北京时间 简单问题,php如何读取xml文件节点的某个属性? 关于一个连接的小问题,谢谢 有谁知道ftp绝对路径如何隐藏起来吗? PHP的爱好者把QQ写上吧,交流交流! 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.