Что происходит, когда мы открываем файл в php и не закрываем его?

Вот код:

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("webdictionary.txt"));
# fclose($myfile);
?>

Что будет, если я не удалю комментарий в третьей строке?

0

Решение

PHP автоматически закрывает файлы в конце документа или раньше exit()ING.

PHP также выгрузит память после того, как будет проанализирована последняя ссылка на файл.

3

Другие решения

Сборщик мусора освободит ресурс, когда больше не будет обнаружена ссылка.

Цитируя из Руководство по PHP :

Благодаря системе подсчета ссылок, представленной в PHP 4 Zend
Движок, ресурс, на который больше нет ссылок на него, обнаружен
автоматически, и это освобождено сборщиком мусора. За это
причина, это редко необходимо, чтобы освободить память вручную.

Примечание. Постоянные ссылки на базы данных являются исключением из этого правила. Oни
не уничтожаются сборщиком мусора. Смотрите постоянный
раздел соединений для получения дополнительной информации.

Рабочий процесс сборки мусора в PHP можно кратко описать так:

  • Контейнер zval создается при создании новой переменной с постоянным значением
  • GC отслеживает номер ссылки этого контейнера.
  • Когда никто не ссылается на этот контейнер, GC добавляет его в другой контейнер, известный как root buffer,
  • GC работает всякий раз, когда root buffer становится полным.
  • Ты можешь использовать gc_collect_cycles () функция для запуска GC.

Чтобы узнать больше о том, как PHP GC, обратитесь к документация.

2

После завершения процесса операционная система освободит все свои ресурсы — выделенную память и файловые дескрипторы. Так что ничего особенного не произойдет, если, конечно, код не будет продолжаться — количество файловых дескрипторов на процесс ограничено, и, как правило, рекомендуется выпускать их, как только вы закончите с ними.

1
По вопросам рекламы [email protected]