твой код можно заменить одной функцией array_unique которуая удалит все дубликаты из массива.
Я думаю алгоритм для больших файлов должен быть следующим:
открытие файла (fopen)
чтение строки.
пробежать по файлу в поисках дубликата с места нахождения этой строки.
Если найдено то занести в массив.
В итоге будет два массива, один чистый а в другом будут все найденные совпадения.