Cómo usar XMLReader / DOMDocument con un archivo XML grande y evitar 500 errores

Tengo un archivo XML de aproximadamente 12 MB que tiene aproximadamente 16000 productos. Necesito procesarlo en una base de datos; sin embargo, en aproximadamente 6000 filas muere con un error 500. Estoy usando el marco Kohana (versión 3) por si tiene algo que ver con eso.

Aquí está mi código que tengo dentro del controlador:

$xml = new XMLReader();
$xml->open("path/to/file.xml");

$doc = new DOMDocument;

// Skip ahead to the first <product>
while ($xml->read() && $xml->name !== 'product');

// Loop through <product>'s
while ($xml->name == 'product')
{
   $node = simplexml_import_dom($doc->importNode($xml->expand(), true));
   // 2 queries to database put here
   $xml->next('product');
}

El XML es un conjunto de elementos para una tienda, por lo que las dos consultas son a)insert ignore la tienda misma yb) inserte el producto

Cualquier idea sería muy apreciada

Respuestas a la pregunta(2)

Su respuesta a la pregunta