Сессия завершается, даже если приложение живо и над ним работают люди

У меня возникла «странная» проблема в приложении, над которым я работаю, и пока я не могу найти для этого решения. Приложение использует Symfony2.6.x и использует несколько вызовов Ajax. Все время запросы делаются через Ajax. Итак, когда я вхожу в приложение (использую FOSUserBundle), Symfony автоматически запускает новую сессию, верно? Хорошо, с этого момента и до времени, определенного в config.yml (см. конфигурацию ниже) для времени жизни сеанса, приложение все еще работает, но в какой-то момент меня перенаправляют на страницу входа, и сеанс закрывается, даже если я активно работаю над приложением. Мой лучший подход заключается в том, что вызовы AJAX не учитываются на протяжении всего сеанса в Symfony или в PHP, я прав?

Мой лучший подход и решение для этой проблемы, не знаю, прав ли я, и ни один из них не пробовал, я хочу выслушать мнение некоторых здесь, в SO, - это повторно сгенерировать идентификатор сеанса (вызвав migrate() на текущем активном сеанс) каждый раз, когда выполняется вызов AJAX, чтобы сеанс оставался активным, правильный ли этот подход? Любые советы по этому поводу?

Это моя конфигурация в config.yml для раздела сеанса:

config.yml

framework:
    session:
        # session will expire after 10 minutes of inactivity 
        handler_id:  ~
        cookie_lifetime: 2400 
        gc_maxlifetime: 600 # session will expire after 10 minutes of inactivity
        gc_probability: 0
        gc_divisor: 100

Примечание: это post и этот другой от меня говорит о в основном то же самое, но я все еще не решаю эту проблему, и это убивает мое приложение и мою голову, пытаясь найти решение.


person ReynierPM    schedule 02.04.2015    source источник


Ответы (1)


Вопросы:
- Вы работаете удаленно? Если да, то есть ли у вас изменения, автоматически сохраняемые мгновенно на сервере, или вам нужно сохранить их вручную, чтобы они стали рабочими?
— замерили ли вы продолжительность вашего реального сеанса (от входа в систему до отключения? )? Одинаковая ли продолжительность?
Предположение:
Без вышеизложенного я считаю, что ваша проблема заключается в настройках параметров истечения срока действия сеанса, и где-то на линии может произойти событие (между вами и сервером). который вызывает сброс сеанса. [Вы пробовали работать с двумя открытыми окнами? Вы знаете, войдите в систему, а затем работайте в другом окне, но оставьте окно входа в систему открытым...]
Если это связано с короткими настройками сеанса, попробуйте следующее:
php_value session.cookie_lifetime 0
php_value session.gc_maxlifetime 60000
Это дает вам достаточно времени сеанса или до тех пор, пока вы не закроете браузер/разорвете соединение...

person Community    schedule 03.04.2015
comment
Что вы имеете в виду под работой удаленно? Я не понимаю вас в этом ответе. Что касается второго ответа, то нет, но если срок действия сеанса установлен на 10 минут, и я активно работаю над страницей в течение 15 минут, почему она закрывается? Это моя забота. Что мне нужно с этим, просто: если пользователь не работает в приложении, потому что он / она уходит или просто оставляет окно | браузер открытым и уходит, тогда, когда это произойдет, и время отсчитывается 10 минут, приложение должно завершиться (переходит на экран входа в систему) в противном случае должен продолжать работать в обычном режиме. Я безуспешно пытался с несколькими настройками истечения срока действия сеанса, поэтому я так не думаю. - person ReynierPM; 03.04.2015
comment
Вы работаете на машине или туннелируете к ней? Это я и спрашивал... - person ; 03.04.2015
comment
Ах да, у меня есть виртуальная машина под управлением CentOS, синхронизированная с временем и датой хоста Windows, поэтому сайт находится на виртуальной машине, это ответ на ваш вопрос? - person ReynierPM; 03.04.2015
comment
Поскольку интерфейс входа в систему всплывает, это означает, что у вас есть событие, которое его запускает! Должен быть какой-то таймер. Замерив продолжительность рабочего сеанса, вы должны получить такое же количество времени X. Затем просто просмотрите код конфигурации на сервере, чтобы найти тот же Xamount, и вот ваш триггер !!! - person ; 03.04.2015
comment
Да, у меня есть триггер, который каждые 13 минут спрашивает, жива ли сессия, но опять же, почему, если я работаю на сайте, сессия закрывается? - person ReynierPM; 03.04.2015
comment
Или, если это не постоянное количество времени между входом в систему и сбросом, чем это связано с тем, что ваша клиентская сторона неправильно обрабатывает файлы cookie: если сервер больше не обнаруживает отпечаток пальца на клиентской машине, чем просто предполагает, что это новый клиент, следовательно, всплывающее окно входа в систему ... Надеюсь, это поможет! - person ; 03.04.2015
comment
Это также может помочь проверить $.ajaxSetup на вашем компьютере. Это может быть проблема с обработкой кеша... [cache: false] - person ; 03.04.2015
comment
Если бы я был на вашем месте, я бы попробовал работать как с учетными данными su, так и без них, чтобы увидеть, происходит ли сброс для sudo... - person ; 03.04.2015
comment
Уважаемый Taifun, каждый из вышеперечисленных вопросов проясняет один или несколько аспектов проблемы, описанной ReynierPM!!! - person ; 04.04.2015