Рубрики
Uncategorized

Использование unset для уничтожения переменных и освобождения памяти в PHP

Автор оригинала: David Wong.

Функция unset () PHP используется для очистки и уничтожения переменных. Мы можем использовать unset() для уничтожения неиспользуемых переменных. Но иногда функция unset() не может уничтожить память, занятую переменными!

Давайте возьмем пример

php
$s = str_ Repeat ('1 ', 255); // generates a string of 255 ones
$m = memory_ get_ Usage(); // get the current occupied memory
unset($s);
$mm = memory_ get_ After usage(); // unset(), check the current memory usage
echo $m-$mm;
?>

Наконец, память, занятая до захода солнца (), выводится за вычетом памяти, занятой unset(). Если это положительное число, то это означает, что unset ($s) уничтожил $s из памяти (другими словами, потребление памяти после unset() было уменьшено). Однако на платформах PHP5 и Windows результат составляет: – 48.

Означает ли это, что unset ($s) не уничтожает память, занятую переменной $s? Давайте рассмотрим следующий пример:

Этот пример почти такой же, как и приведенный выше пример. Разница лишь в том, что $s состоит из 256 единиц, то есть на 1 больше, чем в первом примере. В результате получается 224. Означает ли это, что unset ($s) уничтожил память, занятую $s?

Из двух приведенных выше примеров мы можем сделать следующие выводы:

Вывод 1. Функция unset() может освободить место в памяти только в том случае, если значение переменной занимает более 256 байт.

Можно ли использовать unset для освобождения места в памяти, если значение переменной превышает 256? Давайте проверим это на примере

';
echo $m-$mm;
?>

Когда мы обновляем страницу, мы видим, что в первой строке 256 единиц, а во второй-48. Согласно разуму, мы уничтожили $s, но $P относится только к переменной $s, которая не должна иметь содержимого. Кроме того, потребление памяти после отмены установки ($s) выше, чем до отмены установки()! Теперь давайте сделаем следующий пример:

';
echo $m-$mm;
?>

Теперь обновите страницу, мы видим, что вывод $P не содержит содержимого, а разница в потреблении памяти до и после unset() составляет 224, то есть память, занятая переменными, была очищена. В этом примере также можно заменить на unset (), как показано ниже:

';
echo $m-$mm;
?>

Мы используем unset (), чтобы уничтожить как $s, так и $P. в это время разница между использованием памяти составляет 224, что указывает на то, что память также может быть освобождена. Тогда мы можем сделать другой вывод:

Вывод 2. Только когда все переменные (например, ссылочные переменные), указывающие на переменную, будут уничтожены, память будет освобождена.

Я считаю, что после примеров в этой статье мы должны иметь некоторое представление о unset(). По крайней мере, я использую unset() для освобождения памяти, когда переменные не работают.

Дополнение к контенту

PHP использует unset() для удаления единицы в массиве

Отмена установки может удалить как переменные, так и ячейку в массиве. Однако обратите внимание, что массив не перестраивает индекс.

Примерами являются следующие:

";
print_r($arr);
?>

Выходные результаты выглядят следующим образом:

Array
(
 [0] = > Chaoyang District
 [1] = > Haidian District
 [2] = > Xicheng District
 [4] = > Fengtai District
)

В этой статье будет рассказано об использовании unset для уничтожения переменных и освобождения памяти в PHP. Для получения дополнительной информации о том, как PHP использует unset для уничтожения переменных и освобождения памяти, пожалуйста, найдите предыдущие статьи developeppaer или продолжайте просматривать соответствующие статьи ниже. Я надеюсь, что вы сможете больше поддерживать developeppaer в будущем!

Оригинал: “https://developpaper.com/using-unset-to-destroy-variables-and-free-memory-in-php/”