Как остановить php цикл по времени?
Разделите задачу на простые шаги. Так, чтобы на каждом шаге можно было ловить ошибки и обработать их:Загрузка файла php.net/manual/ru/book.curl.phpРазбор XML php.net/manual/ru/book.simplexml.php
Лучше использовать XmlReader на проход структуры дерева а simplexml на чтение ноды можно прочитать большие xml без необходимости увлечение памяти скрипту.
( на практике применял когда парсил YML каталоги товаров по  2гб+ фаил  средние значение поедание памяти 16-17мб.)
XmlReader читает документ на лету без загрузки дерева в оперативу
simplexml  читает фаёл в оперативу потом разберает...function getSimpleXMLInstance($xml_reader)
 {
        $doc = new DOMDocument('1.0', 'UTF-8');
        return simplexml_import_dom($doc->importNode($xml_reader->expand(), true));
    }
//....

        $xml_reader = new XMLReader();
        $reader = $xml_reader;
        $reader->open($catalog->yml_catalog_url)
        while ($reader->read())
        {
 if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'sitemap')
            {
                try
                {
                   // тут simplexml
                   $simpleXmlObject = getSimpleXMLInstance($reader);
                }
                catch (Exception $e)
               {
                    continue;
                }
            }
        }
ТС, обьем файла в мб?