Всем привет. Нужна помощь, есть задача в которой данные должны храниться не в базе данных а в памяти. К примеру я выбрал стек, запихнул его в frontend/models/Stack, сделал его синглетоном наивно полагая, что объект будет 1 и смогу через него работать с массивом, как бы не так, при обновление страницы массив зануляется. Возможно где-то в этом месте допустил ошибку в логике. Возникла мысль. Что если я реализацию стека перенесу в компонент, т.е. сюда common\components? После в конфиге зарегистрирую его и буду обращаться \Yii::$app->Stack ? К примеру \Yii::$app->Stack->push(1); Буду благодарен за советы.
@Alesto PHP живёт 1 запрос, потом всё по новой. значит состояние не сохраняет и его нужно где-то хранить, чтобы хранить данные в оперативной памяти можешь использовать memcache или redise
На jsp вроде та же ситуация. А вообще, можно замутить, чтоб конструктор Stack считывал его из какого-нибудь memcache, правда последний не гарантирует, что не сотрёт оттуда значения в случае нехватки памяти.
Проникайся: http://phpfaq.ru/newbie/na_tanke При переходе с не stateless-платформ и десктопа, можно много еще подводных камней наловить, если мыслить "по-старинке".