Очереди как раз самое то. Дополнительно создаете табличку, например, file_handlings, в которую будете писать текущий процесс обработки файла с примерно такой структурой id, total_rows, completed_rows. И процесс будет выглядеть примерно так:
1. загружаете файл на сервер
2. создаете запись в таблице file_handlings
3. возвращаете клиенту id из таблицы file_handlings
4. запускаете job на сервере, в job передаете id из таблицы file_handlings
5. в job'е обрабатываете файл и записываем в таблицу file_handlings по id текущий процесс обработки
6. с клиента ajax'ом время от времени дергаете сервер и получаете по id из таблицы file_handlings сколько строк обработалось
......
N. Все строки файла обработались, дальше делайте что вам нужно ;)