Отслеживание таинственной ошибки окончания сеанса - PullRequest
1 голос
/ 27 января 2012

Я использую Codeigniter / PyroCMS, который использует ion_auth.

У меня есть сеанс, установленный на два часа.Я использую сеансы БД.

Где-то есть гремлин, который иногда загружает сессию через n минут.Это очень случайно, и, таким образом, трудно невозможно надежно воспроизвести.

Я добавил записи журнала в класс Session (в частности, sess_destroy), но он просто регистрирует уничтожаемый сеанс, который я уже знал.

Я попытался добавить debug_backtrace () в указанную запись журнала, но это не происходит с кодами (он не регистрируется / выплевывает его на экран за доли секунды до перенаправления! Session),

Есть ли хороший / правильный способ отследить это?

Спасибо, облик.


обновление: я добавил еще несколько записей журнала в Session.php. Оказывается, сеанс db удаляется / перезаписывается неправильно.WHAI

Ответы [ 3 ]

1 голос
/ 27 января 2012

Это кажется довольно распространенной проблемой. Я использовал (и с радостью принял в качестве рекомендации) Родной сеанс Codeigniter (внизу есть ссылка для скачивания)

НО, из-за того, что это старая библиотека, вы ДОЛЖНЫ сделать несколько хаков. Вы можете проверить эти простые хаки на форуме библиотеки

Просто поместите этот файл в каталог библиотеки codeigniter и посмотрите, решит ли ваша проблема. Пожалуйста, оставьте отзыв.

0 голосов
/ 21 февраля 2012

Похоже, что это проблема с сервером, и resol.conf неправильно отображает вещи.

0 голосов
/ 27 января 2012

Похоже, что ваш сеансовый cookie преждевременно истекает.Начните с проверки настроек в вашем конфигурационном файле на предмет ваших сессий.А именно, значение $ config ['sess_expiration'], которое по умолчанию равно 7200. Это 2 часа.

Затем проверьте ваш php.ini, который, по моему мнению, по умолчанию равен 3600. (1 час)

В противном случае, я бы сказал, что если ваш код находится в системе Unix, попробуйте

grep -Rn 'sess_destroy' .

Другая вещь, которую вы можете искать, это любое место, которое пытается записать NULL или пустые значения всессия.Возможно, у вас нигде нет sess_destroy, но вы можете получить что-то с эффектом unset ($ _ SESSION).

Надеюсь, это поможет.

...