Он существует как раз в его рамках. Если он глобальный, он будет существовать столько же, сколько и сеанс. Но если он не глобальный, он не будет существовать после того, как вы покинете область, в которой он существует.

я создаю экземпляр класса и задаю переменную экземпляра в модуле Ruby, используемом контроллером или моделью Rails, как долго эта переменная экземпляра сохраняется? Должна ли переменная явно храниться в сеансе для сохранения между запросами?

Как Rails сравнивается в этом отношении с Java или PHP?

Ответы на вопрос(3)

Решение Вопроса

еделения.

Например, переменные объектов / экземпляров, определенные в вашей среде и файлах конфигурации, будут сохраняться всегда. Простым примером этого являются платежные шлюзы ActiveMerchant, которые определены в файле environment.rb и присутствуют для каждого запроса.

В случае контроллеров, он представляет только для этого HTTP-запроса объект и переменные экземпляра.

какая версия. Учитывая, что PHP4 был выпущен некоторое время назад, я буду говорить только о 5.2 и 5.3: и да, переменные действительно должны храниться в сеансе или каком-либо другом постоянном механизме (memcached, database, file и т. Д.) Для сохранения в запросах. И самая длинная нативная переменная PHP может длиться - длина текущего запроса (и конец которого все очищено).

В обеих версиях PHP:

Переменные экземпляра сохраняются до тех пор, пока на них ссылаются переменные. PHP внутренне хранит счетчик ссылок на каждый объект. Когда переменная выходит из области видимости, PHP уменьшает значение refcount и проверяет его на 0. Если значение равно 0, оно очищает экземпляр и уничтожает объект.

В PHP 5.0, 5.1 и 5.2:

Переменная очистка наивна. Это означает, что если у вас есть циклическая ссылка (класс A содержит экземпляр класса B, и наоборот), объект никогда не будет очищен, пока не будет освобождена одна из этих ссылок.

В PHP 5.3:

PHP представил довольно интеллектуальный сборщик мусора по точной причине циклических ссылок. Его можно отключить или активировать вручную. Он запускается всякий раз, когда его счетчик корней заполнен или счетчик уменьшен до ненулевого числа.

он будет существовать столько же, сколько и сеанс. Но если он не глобальный, он не будет существовать после того, как вы покинете область, в которой он существует.

Ваш ответ на вопрос