<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://doc-en-mirror.openflyers.com/index.php?action=history&amp;feed=atom&amp;title=Test-de-la-solution-fichier-XML</id>
	<title>Test de la solution fichier XML - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://doc-en-mirror.openflyers.com/index.php?action=history&amp;feed=atom&amp;title=Test-de-la-solution-fichier-XML"/>
	<link rel="alternate" type="text/html" href="https://doc-en-mirror.openflyers.com/index.php?title=Test-de-la-solution-fichier-XML&amp;action=history"/>
	<updated>2026-05-02T03:06:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://doc-en-mirror.openflyers.com/index.php?title=Test-de-la-solution-fichier-XML&amp;diff=178&amp;oldid=prev</id>
		<title>imported&gt;Mezza: /* Test */</title>
		<link rel="alternate" type="text/html" href="https://doc-en-mirror.openflyers.com/index.php?title=Test-de-la-solution-fichier-XML&amp;diff=178&amp;oldid=prev"/>
		<updated>2006-06-07T14:22:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Test&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Test=&lt;br /&gt;
Un script a été utilisé pour créer un fichier de logs de 30000 entrées.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 i=0&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;&amp;lt;?xml version=\&amp;quot;1.0\&amp;quot; encoding=\&amp;quot;utf-8\&amp;quot;?&amp;gt;&amp;quot; &amp;gt; logs.xml&lt;br /&gt;
 echo &amp;quot;&amp;lt;!DOCTYPE logs SYSTEM \&amp;quot;logs.dtd\&amp;quot;&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
 echo &amp;quot;&amp;lt;logs&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
 &lt;br /&gt;
 while [ $i -lt 10000 ]&lt;br /&gt;
   do&lt;br /&gt;
   echo &amp;quot; &amp;lt;log&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;date&amp;gt;`date`&amp;lt;/date&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;login&amp;gt;login$i&amp;lt;/login&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;droits&amp;gt;droits&amp;lt;/droits&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;operation&amp;gt;connexion&amp;lt;/operation&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;tables&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;/tables&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot; &amp;lt;/log&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   &lt;br /&gt;
   echo &amp;quot; &amp;lt;log&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;date&amp;gt;`date`&amp;lt;/date&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;login&amp;gt;login$i&amp;lt;/login&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;droits&amp;gt;droits&amp;lt;/droits&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;operation&amp;gt;modification&amp;lt;/operation&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;tables&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;   &amp;lt;tab id=\&amp;quot;table1\&amp;quot;&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;    &amp;lt;champ id=\&amp;quot;champ1\&amp;quot;&amp;gt;valeur1&amp;lt;/champ&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;   &amp;lt;/tab&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;   &amp;lt;tab id=\&amp;quot;table2\&amp;quot;&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;    &amp;lt;champ id=\&amp;quot;champ2\&amp;quot;&amp;gt;valeur2&amp;lt;/champ&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;   &amp;lt;/tab&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;/tables&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot; &amp;lt;/log&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
 &lt;br /&gt;
   echo &amp;quot; &amp;lt;log&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;date&amp;gt;`date`&amp;lt;/date&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;login&amp;gt;login$i&amp;lt;/login&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;droits&amp;gt;droits&amp;lt;/droits&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;operation&amp;gt;deconnexion&amp;lt;/operation&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;tables&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot;  &amp;lt;/tables&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
   echo &amp;quot; &amp;lt;/log&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
 &lt;br /&gt;
   i=$(($i+1))&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;&amp;lt;/logs&amp;gt;&amp;quot; &amp;gt;&amp;gt; logs.xml&lt;br /&gt;
&lt;br /&gt;
La DTD utilisée pour le fichier XML étant la suivante :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT logs (log*)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT log (date, login, droits, operation, tables)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT date (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT login (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT droits (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT operation (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT tables (tab*)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT tab (champ*)&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST tab id CDATA #REQUIRED&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT champ (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST champ id CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Temps nécessaire à la création du fichier de logs : 1 minute 31 secondes.&lt;br /&gt;
&lt;br /&gt;
Ensuite, un script PHP est utilisé pour faire une requète sur le fichier logs.xml créé et pour chronometrer le temps necessaire à l'obtention du résultat.&lt;br /&gt;
La requète consiste à demander combien d'opérations ont été effectuées par la personne ayant l'identifiant 'login15'.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $temps = microtime();&lt;br /&gt;
 $temps = explode(' ', $temps);&lt;br /&gt;
 $debut = $temps[1] + $temps[0];&lt;br /&gt;
 &lt;br /&gt;
 $file = &amp;quot;logs.xml&amp;quot;;&lt;br /&gt;
 $depth = array();&lt;br /&gt;
 $last_name = &amp;quot;&amp;quot;;&lt;br /&gt;
 $n = 0;&lt;br /&gt;
 &lt;br /&gt;
 function startElement($parser, $name, $attrs)&lt;br /&gt;
 {&lt;br /&gt;
   global $depth;&lt;br /&gt;
   global $last_name;&lt;br /&gt;
   $last_name = $name;&lt;br /&gt;
   $depth[$parser]++;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function endElement($parser, $name)&lt;br /&gt;
 {&lt;br /&gt;
   global $depth;&lt;br /&gt;
   $depth[$parser]--;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function characterData($parser, $data)&lt;br /&gt;
 {&lt;br /&gt;
   global $n;&lt;br /&gt;
   global $depth;&lt;br /&gt;
   global $last_name;&lt;br /&gt;
   if(($last_name == &amp;quot;LOGIN&amp;quot;) &amp;amp;&amp;amp; ($data == &amp;quot;login15&amp;quot;))&lt;br /&gt;
      {&lt;br /&gt;
       $n++;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 $xml_parser = xml_parser_create();&lt;br /&gt;
 xml_set_element_handler($xml_parser, &amp;quot;startElement&amp;quot;, &amp;quot;endElement&amp;quot;);&lt;br /&gt;
 xml_set_character_data_handler($xml_parser, &amp;quot;characterData&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
 if(!($fp = fopen($file, &amp;quot;r&amp;quot;)))&lt;br /&gt;
 {&lt;br /&gt;
   die(&amp;quot;could not open XML input&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 while($data = fread($fp, 4096))&lt;br /&gt;
 {&lt;br /&gt;
   if(!xml_parse($xml_parser, $data, feof($fp)))&lt;br /&gt;
     {&lt;br /&gt;
       die(sprintf(&amp;quot;XML error : %s at line %d&amp;quot;, xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 echo 'Nombre d\'opérations effectuées par login15 : '.$n.'&amp;lt;br&amp;gt;';&lt;br /&gt;
 xml_parser_free($xml_parser);&lt;br /&gt;
 &lt;br /&gt;
 $temps = microtime();&lt;br /&gt;
 $temps = explode(' ', $temps);&lt;br /&gt;
 $fin = $temps[1] + $temps[0];&lt;br /&gt;
 echo 'Page générée en '.round(($fin - $debut), 6).' secondes.';&lt;br /&gt;
 ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Résultat=&lt;br /&gt;
Nombre d'opérations efféctuées par login15 : 3&lt;br /&gt;
&lt;br /&gt;
Le résultat est exact.&lt;br /&gt;
&lt;br /&gt;
*taille du fichier log : 6.8 Mo&lt;br /&gt;
*temps de traitement de la requète : 5.8 s&lt;/div&gt;</summary>
		<author><name>imported&gt;Mezza</name></author>
	</entry>
</feed>