Intereting Posts
«Invalid ns» при подключении к серверу mongodb CakePHP Security :: cipher () не работает специально на сервере Очень конкретный запрос MySQL, который я хочу улучшить PHP setcookie похож на подразделы ASP.Net Cookie Зачем вызывать mb_convert_encoding для дезинфекции текста? Как показать свое время в формате 24 часа Ошибка Apache Родитель: дочерний процесс завершен со статусом 3221225477 – Перезапуск Как показать последнее время входа (год, месяц, неделя, день, время, секунда) .. я попытался, но неправильный вывод Отправлять push-уведомление конкретному пользователю с помощью Parse Исключение в моем первом клиенте SOAP Получить процентное значение процента процессора в php PDO: Недопустимый номер параметра: смешанные имена и позиционные параметры – знак вопроса в комментариях php не может подключиться к mysql с ошибкой 13 (но в командной строке) Оберните текст каждые 2500 символов в <div> для разбивки на страницы, используя PHP или javascript Как многопользовательская работа с использованием Codeigniter famework (PHP)?

Как сборка мусора работает в PHP? А именно, как очищаются локальные функциональные переменные?

Если я присваиваю значение переменной, которая не объявлена ​​глобальной внутри функции, эта переменная будет автоматически отключена, когда функция завершится или будет отменена, только когда скрипт PHP завершит выполнение?

Я пытаюсь определить, умнее ли отключать временные переменные области действия функции внутри функции вручную или не беспокоиться о том, что они будут автоматически отключены механизмом PHP.

Solutions Collecting From Web of "Как сборка мусора работает в PHP? А именно, как очищаются локальные функциональные переменные?"

Переменная будет отменена, когда функция выйдет, если только она не имеет внешних ссылок на нее, которая сохранит ее «живой». Независимо от того, освобождается ли фактическая память, которую занимает переменная, или нет, она полностью зависит от сборщика мусора. GC – это дорогостоящая операция, и PHP будет использовать ее только при необходимости (например, при сбое памяти).

Это полностью зависит от объема функции. Теоретически, вы могли бы запустить весь сценарий в рамках одной функции (надеюсь, тот, который вызывает другие функции, но все же …).

Для разумно размерной функции с минимальными побочными эффектами вполне нормально оставлять свои объекты – их деструкторы будут вызваны после завершения функции (это второй эффект отмены), и они будут очищены в течение первого цикл очистки после завершения функции. Для большей функции, которая включает создание на большом количестве объектов, тогда было бы лучше вручную удалить объекты.

Zend Engine выполнит очистку для вас, уменьшив количество ссылок по мере необходимости .