У меня есть цикл PHP, в котором я читаю и обрабатываю содержимое нескольких файлов.PHP fclose не освобождает память
<?php
foreach($files as $file)
{
$f = fopen($file, 'r');
$content = fread($f, filesize($file));
import($content);
fclose($f);
}
?>
Однако после нескольких итераций цикла, я все еще получаю истощенную ошибку памяти на линии Fread() - мое понимание, что с помощью fclose() позволит высвободить память ресурса, но это не так?
Я прочитал ряд других вопросов по этому вопросу, и все они ссылаются на использование fclose(), которое я уже делал. Я также выгружаю memory_get_usage()/memory_get_peak_usage(), и они просто продолжают подниматься до тех пор, пока не появятся ошибки.
Я не понимаю, как fclose() обрабатывает освобождение памяти?
Что делает 'import ($ content)' do? Возможно, это то, что поглощает память. – Oswald
Да, 'import()' не встроен. Эта функция считывает весь контент из этих файлов, а затем не освобождает его, когда он закончен? 'fclose()', как у вас есть, будет работать правильно. –
Хмм, import() просто вставляет данные в базу данных, но если я не вызываю import(), он доходит до конца цикла foreach. Однако я не понимаю, что содержимое читается с помощью fread() внутри foreach и просто передает его для импорта(), так где я могу освободить память? – MattRogowski