Как работать в php с большим xml?
Вам стоит обратить внимание на yield в PHP. Можете погуглить , что это. Здесь тоже был вопрос. И переделать код используя yield для более точного считывания файла по частям
почитай про долгие контроллеры/экшены, если вкратце, то контроллер разбивает задачу на шаги/блоки каждый из которых займет меньше времени чем макс. время выполнения скрипта и потом пошагово обрабатывает файл - ajax/cron запросы к контроллеру повторяются до тех пор, пока не будут выполнены все шаги/блоки.