У меня большой файл, 100 000 строк. Я могу читать каждую строку и обрабатывать ее, или я могу хранить строки в массиве, а затем обрабатывать их. Я бы предпочел использовать массив для дополнительных функций, но меня действительно беспокоит использование памяти, связанное с хранением многих строк в массиве, и если это того стоит.
Вы должны ознакомиться с двумя функциями.
Первым является file()
, который считывает весь файл в массив, причем каждая строка является элементом массива. Это полезно для более коротких файлов, и, вероятно, это не то, что вы хотите использовать в файле 100k. Эта функция обрабатывает собственное управление файлами, поэтому вам не нужно явно открывать и закрывать файл самостоятельно.
Второй – fgets()
, который вы можете использовать для чтения файла по одной строке за раз. Вы можете использовать это для цикла до тех пор, пока есть больше строк для обработки, и выполните свою линию обработки внутри цикла. Вам нужно будет использовать fopen()
чтобы получить дескриптор этого файла, вы можете сами отслеживать указатель файла для управления восстановлением (т. Е. Вам не придется перезагружать обработку с нуля, если что-то идет сбоку и скрипт не работает ), и т.д.
Надеюсь, этого достаточно, чтобы вы начали.
Как насчет комбинации этих двух? Прочитайте 1000 строк в массиве, обработайте его, удалите массив, затем прочитайте еще 1000 и т. Д. Затрагивайте использование памяти монитора и настраивайте, сколько вы читаете в массив за раз.