Как разбирать большой файл CSV без тайм-аута?

Я пытаюсь разобрать файл размером 50 мегабайт .csv. Сам файл в порядке, но я пытаюсь преодолеть серьезные проблемы с таймаутом. Каждый из них настроен на загрузку, я могу легко загрузить и повторно открыть файл, но после таймаута браузера я получаю 500 Внутреннюю ошибку.

Я предполагаю, что могу сохранить файл на сервере, открыть его и сохранить значение сеанса, с которым я столкнулся. После определенной строки я сброшу соединение через обновление и откройте файл в строке, с которой я остановился. Является ли это полезной идеей? Предыдущий разработчик сделал очень неэффективный класс MySQL, и он контролирует весь сайт, поэтому я не хочу писать свой собственный класс, если мне это не нужно, и я не хочу связываться со своим классом.

Версия TL: DR: эффективно ли сохранять последнюю строку, которую я сейчас нахожу в CSV-файле, который имеет 38K строк продуктов, а после X количество строк, сбросить соединение и начать с того места, где я остановился? Или есть другой способ разобрать большой файл CSV без тайм-аутов?

ПРИМЕЧАНИЕ. Это время выполнения скрипта PHP. В настоящее время на линиях 38K для командной строки требуется около 46 минут и 5 секунд. Он работает корректно в 100% случаев, когда я удаляю его из браузера, предполагая, что это тайм-аут браузера. Тайм-аут Chrome не редактируется, насколько Google сказал мне, и тайм-аут Firefox работает редко.