title: Why XMLReader repeat mysql insert function inside while and can't stop?
body: <p>I am using XMLReader to import huge xml file by elements to MySQL database. Xml contains 1 547 772 tags (element) named 'RECORD'.</p>
  
  <p>XML example </p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;RECORD&gt;&lt;NAME&gt;ДОШКІЛЬНИЙ НАВЧАЛЬНИЙ ЗАКЛАД №1 ЗАГАЛЬНОГО РОЗВИТКУ УЖГОРОДСЬКОЇ МІСЬКОЇ РАДИ ЗАКАРПАТСЬКОЇ ОБЛАСТІ&lt;/NAME&gt;&lt;SHORT_NAME&gt;ДНЗ №1&lt;/SHORT_NAME&gt;&lt;EDRPOU&gt;34888585&lt;/EDRPOU&gt;&lt;ADDRESS&gt;88000, Закарпатська обл., місто Ужгород, ВУЛИЦЯ М.ВОВЧКА, будинок 47,  "А"&lt;/ADDRESS&gt;&lt;BOSS&gt;НАКОНЕЧНА ОЛЕНА АНАТОЛІЇВНА&lt;/BOSS&gt;&lt;KVED&gt;85.10 Дошкільна освіта&lt;/KVED&gt;&lt;STAN&gt;зареєстровано&lt;/STAN&gt;&lt;FOUNDERS&gt;&lt;FOUNDER&gt;УПРАВЛІННЯ ОСВІТИ УЖГОРОДСЬКОЇ МІСЬКОЇ РАДИ, розмір внеску до статутного фонду - 0.00 грн.&lt;/FOUNDER&gt;...&lt;/FOUNDERS&gt;&lt;/RECORD&gt;...
  </code></pre>
  
  <p>For MySQL connection use </p>
  
  <pre><code>function connectBase(){
  
      include __DIR__ . '/../../settings/sql.set.php';
      $mysql = mysqli_connect($_sqlhost, $_sqluser, $_sqlpass, $_sqldb);
      mysqli_query($mysql, "Set charset utf8");
      mysqli_query($mysql, "Set character_set_client = utf8");
      mysqli_query($mysql, "Set character_set_connection = utf8");
      mysqli_query($mysql, "Set character_set_results = utf8");
      mysqli_query($mysql, "Set collation_connection = utf8_general_ci");
      return $mysql;
  }
  </code></pre>
  
  <p>Main function for parsing</p>
  
  <pre><code>function XMLReaderToDB($setting = false)
  {
  
      $mysql = connectBase();
      $dir = __DIR__ . '/../../tmp/';
      $xmlURL = $dir . $setting['file'];
      $xml = new XMLReader();
      $xml-&gt;open($xmlURL);
  
      $start_time = time();
      $start = $setting['start'];
      $limit = $setting['limit'];
      $stop = $start + $limit;
  
      $i = 0;
      $count = 0;
      $result = 1;
  
      while($xml-&gt;read())
      {
              if ($xml-&gt;nodeType == XMLReader::ELEMENT &amp;&amp; $xml-&gt;name == $setting['tag']) {
  
                  $item[] = "('items', '" . mysqli_real_escape_string($mysql, $xml-&gt;readOuterXML()) . "')";
              }
  
              if ($xml-&gt;nodeType == XMLReader::END_ELEMENT &amp;&amp; $xml-&gt;name == $setting['tag']) {
                  $i++;
                  $count++;
                  if ($count &gt;= 500) {
                      insertXMLtoDB($mysql, $item);
                      $item = array();
                      $count = 0;
                  }
              }
          if($i == $stop){
              break;
          }
      }
      $xml-&gt;close();
      insertXMLtoDB($mysql, $item);
  
      $mysql-&gt;close();
  
      $end_time = time();
      $time_elapsed_secs = $end_time - $start_time;
      echo '&lt;br/&gt;Items: ' . $i . '&lt;br/&gt;';
      echo 'Start: ' . date('H:i:s', $start_time) . '&lt;br/&gt;';
      echo 'End: ' . date('H:i:s', $end_time) . '&lt;br/&gt;';
      echo $time_elapsed_secs . ' sec. (' . ($time_elapsed_secs /60) . ' min.)';
      die;
  }
  </code></pre>
  
  <p>And for MySQL insert</p>
  
  <pre><code>function insertXMLtoDB($mysql, $data = false){
      mysqli_query($mysql,"INSERT INTO _parse_tmp (parse_key, parse_value) VALUES " . implode(", ", $data));
      $data = array();
      // echo 'Success';
  }
  </code></pre>
  
  <p>But, MySQL requests don't stop after 1 547 772 inserts and "while" continues to run. I notice if uncommenting echo 'Success'; in insertXMLtoDB function, "while" is stopping at 1 547 772 inserts and finishing correctly.
  What is wrong in my functions?</p>