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.
Partager