В PHP это зависит от того, какая версия.Учитывая, что PHP4 был выпущен некоторое время назад, я буду говорить только о 5.2 и 5.3: и да, переменные действительно должны храниться в сеансе или каком-либо другом постоянном механизме (memcached, database, file и т. Д.) Для сохранения в запросах.И самая длинная нативная переменная PHP может длиться - это длина текущего запроса (и конец которого все очищено).
В обеих версиях PHP :
Переменные экземпляра сохраняются до тех пор, пока существуют переменные, ссылающиеся на них.PHP внутренне хранит счетчик ссылок на каждый объект.Когда переменная выходит из области видимости, PHP уменьшает значение refcount и проверяет на 0. Если значение равно 0, оно очищает экземпляр и уничтожает объект.
В PHP 5.0, 5.1 и 5.2:
Переменная очистка наивна.Это означает, что если у вас есть циклическая ссылка (класс A содержит экземпляр класса B, и наоборот), объект никогда не будет очищен, пока не будет освобождена одна из этих ссылок.
В PHP5.3:
PHP представил довольно интеллектуальный сборщик мусора по точной причине циклических ссылок.Его можно отключить или активировать вручную.Он запускается всякий раз, когда его счетчик корней заполнен или счетчик уменьшен до ненулевого числа.