0
我想从mysql数据查询中创建一个xml文件。从mysql数据创建xml文件到缓慢
这部分效果很好,但在15秒左右创建一个大约5000行的文件非常慢。
在apache服务器上,压缩被激活。
见我的代码:
$recordset = mysql_query($query, $link);
$dom = new DOMDocument('1.0', 'UTF-8');
$rootNode= $dom->appendChild($dom->createElement('DatabaseDB'));
while($row_recordset = mysql_fetch_row($recordset))
{
$record = new DomElement("p", "");
$rootNode->appendChild($record);
$record->SetAttribute("id", utf8_encode($row_recordset[0]));
$record->SetAttribute("np", utf8_encode($row_recordset[1]));
$record->SetAttribute("pr", utf8_encode($row_recordset[8]));
$record->SetAttribute("d1", utf8_encode($row_recordset[2])."/".utf8_encode($row_recordset[3]));
$record->SetAttribute("dn", (datefr($row_recordset[4])));
$record->SetAttribute("tel", utf8_encode($row_recordset[5]));
$record->SetAttribute("st", utf8_encode($row_recordset[6])." - ".(datefr($row_recordset[7])));
}
mysql_free_result($recordset);
mysql_close();
print $dom->saveXML();
如果你有一个想法的加载速度,我很高兴。 感谢
根据答案,我尝试:
$writer = new XmlWriter();
$writer->setIndent(true);
$writer->openURI('php://output');
$writer->startDocument('1.0', 'utf-8');
$writer->startElement('DatabaseDB');
while($row_recordset = mysql_fetch_row($recordset))
{
$writer->startElement('p');
$writer->writeAttribute("id", utf8_encode($row_recordset[0]));
$writer->writeAttribute("np", utf8_encode($row_recordset[1]));
$writer->writeAttribute("pr", utf8_encode($row_recordset[8]));
$writer->writeAttribute("d1", utf8_encode($row_recordset[2])."/".utf8_encode($row_recordset[3]));
$writer->writeAttribute("dn", (datefr($row_recordset[4])));
$writer->writeAttribute("tel", utf8_encode($row_recordset[5]));
$writer->writeAttribute("st", utf8_encode($row_recordset[6])." - ".(datefr($row_recordset[7])));
$writer->endElement();
}
$writer->endElement();
$writer->flush();
但是,随着的DomDocument,它需要大约787-9创建文件(5000行),用的XmlWriter是角落找寻787-8。
你有一个新的想法来优化? 谢谢 所以,表演不是更好。
对我来说都很好,查询执行时间呢?在这里做什么datefr函数?使用[确定执行时间代码]来确定实际时间。从新的DOMDocument行开始它。 – 2012-03-24 00:44:54
其中之一,你真的需要'utf8_encode'吗?你在处理什么编码? – deceze 2012-03-24 00:45:06
你的问题几乎肯定来自查询,而你没有附加它,所以很难在这里帮助你:) – haltabush 2012-03-24 01:53:15