stream_get_line, по-видимому, более эффективен, чем fgets для больших файлов. Если вы укажете разумную максимальную длину для чтения, я не вижу причин, почему PHP пришлось бы «читать вперед», чтобы прочитать строку, как вы, кажется, беспокоитесь.
Если вы хотите использовать CSV, fgetcsv вернет результаты в несколько более разумном формате.