Как работать с большим csv файлом?
filesize, fopen, fseek, fgets - должны помочь пропускать уже обработанные строки.
1. Считываете по-символьно строку за строкой, всегда определяете максимальное время обработки одной строки.
2. Как только превышен максимальный лимит времени минус 3*макс. время одной строки (3-й запас), то запоминаем позицию и останавливаем чтение из файла.
3. Позицию для продолжения - передаём (возвращаем) в ajax (в браузер)
4. Используя эти параметры, при запуске скрипта вызываем seek на стартовую позицию и продолжаем обработку файла.
Попробуйте разбить его не на n строк, а на N килобайт.
Нужно будет только немного заморочиться с обработкой строк, на которые будут попадать границы блоков. Например в начале блока убирать символы до \n, а после блока прочитать еще nN байт, пока не встретится \n.