Проблема с переключением сеансов Zend Framework

Я помогаю разрабатывать веб-сайт на основе Zend Framework, который начал испытывать проблемы с переключением сеансов, которые появляются случайным образом. МЫ не нашли способа обнаружить эту проблему, за исключением случаев, когда наши пользователи и мы сами сталкиваемся с переключением сеансов при обновлении или навигации по сайту. мы не нашли ни порядка, ни закономерности, которые помогли бы нам определить, в чем причина. Наша система использует две базы данных, стандартную базу данных веб-сайта и базу данных API. Мы заметили, что задания cron для этих двух баз данных создают большое количество сеансов, за исключением того, что это не должно вызывать проблему переключения сеансов с количеством случаев, с которыми мы столкнулись.

Мы пытаемся найти способ определить причину этой проблемы. Мы будем признательны за любые советы или советы о том, как найти причину этой проблемы. Мы будем очень признательны за любые советы.

ОБНОВЛЕНИЕ: у нас есть поддомены для разработки и тестирования, в которых никогда не происходил обмен сеансами. кажется, это происходит только на веб-сайте прямого эфира.


person briar140    schedule 08.05.2011    source источник
comment
Я предполагаю, что вы заметили своп в объекте Zend_Session. Изменяется ли также файл cookie идентификатора сеанса?   -  person haknick    schedule 08.05.2011
comment
мы замечаем это как в локальных файлах cookie пользователя, так и в базе данных для сеансов. Мы думаем, что это может быть проблема Zend_Auth. Сначала мы подумали, что это кто-то пытается украсть сеанс. Но наши тестеры заметили это. Сначала мы думали, что это проблема с загрузкой таблицы сеансов, но мы видели, что это происходит одинаково быстро и так же часто на пустой таблице сеансов, как и на таблице с более чем 30 000 строк.   -  person briar140    schedule 08.05.2011
comment
Простой вопрос: вы устанавливаете уникальное имя при запуске сеанса приложения? Кроме того, почему ваши cronjobs используют сеансы?   -  person Keyne Viana    schedule 08.05.2011
comment
Что вы подразумеваете под уникальным именем? Если вы имеете в виду уникальный идентификатор сеанса, то нет, нет 100% гарантии, что он уникален - сеансы по умолчанию Zend_Session, которые по сути являются собственными сеансами PHP; это использует уникальную информацию о пользователе в качестве входных данных для хеш-функции, которая создает такую ​​энтропию, что да, вы почти гарантированно никогда не увидите дублирующийся идентификатор сеанса, созданный для двух разных пользователей, но, очевидно, что-то происходит либо для того, чтобы обойти вероятность дублирования id, либо перетаптывать существующий id.   -  person briar140    schedule 08.05.2011
comment
Задания Cron создают сеансы, потому что обсуждаемые задания cron — это те, которые обращаются к веб-сайту как квази-RESTful API для запуска некоторых веб-скриптов. Доступ к сайту создает сеансы.   -  person briar140    schedule 08.05.2011
comment
Используете ли вы какой-либо прокси-кэш в производственной среде, например Varnish или Squid? Используете ли вы кэши уровня приложений? Возможно, вы кэшируете ответ страницы с инструкцией Set-Cookie внутри, чтобы все пользователи получали один и тот же файл cookie сеанса.   -  person regilero    schedule 10.05.2011
comment
Привет, это могут быть глупые вопросы, но вот. Если вы только начали, используете ли вы базу данных для управления сеансами или проводите сеансы на основе файлов? Если вы работаете на основе файлов, используете ли вы кластер серверов? Что вы имеете в виду под обменом сессиями? Пользователи получат чужую сессию? Или пользователи будут переключаться между двумя сеансами, которые считаются их, но не чужими?   -  person Jerry Saravia    schedule 28.05.2011