Как оптимизировать вложенные циклы foreach в PHP?
Если возможно, парсить по кускам. Если "пишем результаты в БД" это простой INSERT, то делать его не каждый раз. а вставлять по несколько записей за раз (VALUES), в зависимости от количества данных (попробовать 1000 вставить для начала).$xmlFile3 = "http://путь-к-XML/Cities".$districtId;
Эта строка два раза повторяется, можно не читать второй раз.
циклы foreach используют виртуальную копию, можно ускорить процесс как минимум использузуя for. А так же воспользоваться комментарием Максима Барулина )