Bonjour,

Je dois créer un fichier xml sur le serveur.
Ce fichier, issu d'une requête MySQL, va contenir un nombre important de lignes (de 15000 à 50000).

Le temps de création du fichier est extrement long, plus d'une minute.

J'ai testé deux méthodes mais avec des résultats assez semblables:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
 
$dom = new DOMDocument('1.0', 'UTF-8');
$rootNode= $dom->appendChild($dom->createElement('MyDB'));
 
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])));
 
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
$writer = new XmlWriter();
 
//lets also set the indent so its a very clean and formatted XML
$writer->setIndent(true);
$writer->openURI('php://output');
$writer->startDocument('1.0', 'utf-8');
$writer->startElement('MyDB');
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();

L'un de vous aurait-il une autre idée permettant d'accélérer le traitement.

Merci par avance.