сессия стойки сбрасывает / истекает - PullRequest
1 голос
/ 13 февраля 2011

В настоящее время я использую enable: session для моего веб-сервера sinatra. Но мне нужно перейти к управлению сессиями на основе памяти

Когда я использую Rack :: Session :: Pool, он запускается, хотя срок моей сессии истекает при перезагрузке страницы или даже при выполнении нового вызова Ajax.

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

Если вы используете Passenger или один из других веб-серверов, это потому, что создается новый поток. Если вы быстро перезагрузите свою страницу, вы, вероятно, получите сеансы с истекшим сроком действия с созданием нового потока (он находится в памяти определенного потока веб-сервера)

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

1 голос
/ 21 октября 2013

Ник прав насчет проблемы с потоками, которую обнаружил Пассажир.

Redis - отличное решение в памяти. Это невероятно легкий. Вы можете узнать больше здесь: http://redis.io/.

Я использую адаптер Redis для Rack::Session.

Подробнее об этом можно прочитать здесь: http://redis -store.org / redis-rack /

Это довольно легко. Просто включите gem redis-rack в свой Gemfile и сделайте это в своем приложении sinatra

require 'redis-rack'
disable :sessions
use Rack::Session::Redis
...