В используемом виде (когда процесс выполняется на сервере), создать такой функционал достаточно сложно. Как верно заметил
Adamos, чаще всего и проще всего реализовать весь процесс обработки без интерактивности, так как напрямую сервер, "по своему желанию", не может отвечать клиенту, а отвечает только в ответ на запрос, после чего завершает работу, за исключением некоторых случаев, которые тут не совсем применимы. По этому, скорее всего, либо вы не верно поняли задание, либо сам поставивший задачу слабо представляет принцип работы веб приложений.
Как варианты реализации:
1) Просто перед обработкой выбираем галочку "убрать все дубликаты", простое и рабочее решение, вы заранее определяете алгоритм обработки и больше ничего не надо делать.
2) На сервере проходимся по файлу, находим все дубликаты и записываем массив позиций, выдаем человеку этот массив в виде списка галочек, после отправки - удаляем помеченные позиции. Реализация в разы сложнее, но полностью удовлетворяет условию.
3) Вариант с извращениями - на сервере перебираем файл, при нахождении дубля отправляем клиенту галочку, а в сессию пишем позицию с которой продолжать и завершаем скрипт. По получении запроса с галочкой - продолжаем с той же позиции. Криво, но абсолютно повторяет функционал описанный вами.