Ответы пользователя по тегу Сессии
  • Лучший способ хранения временных результатов поиска, полученных через VK API (в Yii2)?

    @yiiworld
    В целом правильно использовать кэш методологию для хранения результатов. А конкретная реализация может быть разная.
    1) Просто и быстро: это файловый кэш, для этого в Yii2 есть компонент yii\caching\FileCache. Если у вас быстрый SSD диск будет использоваться, то этого будет достаточно для тысячи запросов на чтение в секунду. Но тут можно упереться в запись - если будет большое количество одновременных изменений в кеше (например больше нескольких десятков в секунду). При всем этом для небольших проектов файловый кеш на SSD будет в разы быстрее работать чем специализированные системы - за счет отсутствия лишних накладных расходов на функционирование самой системы кеширования.
    2) Сложно(условно), быстро, масштабируемо: это например использование Redis, для этого в Yii2 есть компонет https://github.com/yiisoft/yii2-redis. Данные хранятся в оперативной памяти поэтому ее должно быть с запасом, конкретные атомарные действия с кешем будут медленнее чем с файловым кешем на SSD, но за счет архитектуры и возможности масштабировать систему, она может выдерживать очень высокие нагрузки по чтению и записи. А также в Redis выигрыш будет когда количество самих данных начнет увеличиваться - например более миллиона записей - это произойдет за счет использования для поиска идентификаторов быстрого индекса. Интерфейсы достаточно простые, но все же нужно понимать как все устроено и потратить на это какое-то время - достаточно часто сталкиваюсь с неправильным применением Redis в проектах.

    PS
    "большим кол-вом пользователей" понятие относительное - лучше укажите возможное среднее или необходимый "потолок".
    Ответ написан
    Комментировать
  • Как увеличить время сессии в yii?

    @yiiworld
    Для Yii2 нужно добавить в конфигурацию(/config/web.php для базового приложения) значение timeout с указанным количеством секунд.
    Например на 10 лет:
    $config = [
    ...
    	'components' => [
            ...
    		'session'=>[
    	    		'timeout'=>10*365*24*60*60,
    		],
    	...
    	],
    ...
    ];
    Ответ написан
    Комментировать