для начала, забудьте вы о ф-ции file()
ЗАЧЕМ вам файл построчно в массиве? Есть же нормальная ф-ция file_get_contents() которая вертает содержимое в строке.
Далее, наступление таймлимита можно обломать используя вызов
set_time_limit(0);
который, правда, не работает в safe mode :)
Теперь насчет более экономичных методов.
Впринципе ПХП поддерживает вплоть до работы с сокетами. Только будет ли это экономичнее? Я сомневаюсь.
Дело в том, что вызывая file_get_contents() и передавая ему УРЛу в адресе ты "отдаешь управление" на компилированные и (надеюсь) отлаженные модули, которые работают в разы быстрее, что интерпритируемый скрипт.
У тебя затык ведь не в скрипте скорее всего идет, а в канале передачи ...
Потому либо отключай тайм лимит, либо придумывай другое решение ...
А почему бы и посимвольно его не прочитать? Может я немного совсем не понимаю (ну не приходилось ещё так перекачивать), но сначала скачать скажем первый миллион байт, записать в файл. Затем второй миллион (ну типа не с начала файл читать). Когда все семь кусков будут, собрать их в один. Может всё и поглючится, либо вообще работать не будет, но вот так я думаю...