Чтение очень больших файлов в PHP
fopen
терпит неудачу, когда я пытаюсь прочитать в файле очень среднего размера вPHP
. A 6 meg file
заставляет его задыхаться, хотя небольшие файлы вокруг100k
просто отлично. Я читал, что иногда необходимо перекомпилироватьPHP
с-D_FILE_OFFSET_BITS=64
флаг, чтобы читать файлы более 20 гигов или что-то смешное, но разве у меня не должно быть проблем с 6-мегабайтным файлом? В конце концов мы захотим прочитать файлы размером около 100 мегабайт, и было бы неплохо иметь возможность открывать их, а затем читать их построчно с помощью fgets, как я могу делать с небольшими файлами.
Каковы ваши хитрости / решения для чтения и выполнения операций с очень большими файлами вPHP
?
Обновление: вот пример простого кодового блока, который не работает на моем 6-мегабайтном файле - PHP, похоже, не выдает ошибку, он просто возвращает false. Может быть, я делаю что-то чрезвычайно глупое?
$rawfile = "mediumfile.csv";
if($file = fopen($rawfile, "r")){
fclose($file);
} else {
echo "fail!";
}
Еще одно обновление: спасибо всем за помощь, оказалось, что это что-то невероятно глупое - проблема с разрешениями. Мой маленький файл необъяснимо имел права на чтение, а больший - нет. Doh!