Chrome создает дубликаты сессий с одинаковым идентификатором

Я столкнулся с проблемой, когда я пересматривал свою библиотеку сессий сегодня, и это может быть первый раз, когда я когда-либо видел специфичную для браузера проблему в серверном скрипте. Я надеюсь, что кто-то может пролить свет.

В основном, как работает библиотека сессий: при создании экземпляра она проверяет наличие cookie с именем «apos; id»; (в форме уникального результата) на клиентской машине. Если файл cookie найден, сценарий проверяет его и хэшированную копию строки пользовательского агента по записям в таблице сеансов. Если соответствующая запись найдена, сценарий возобновляет сеанс. Если нет файла cookie с именем & quot; найден, или если в таблице сеансов не найдено соответствующей записи, сценарий создает оба. Я думаю, что он довольно стандартный.

Теперь вот странная часть: в Firefox все работает как и предполагалось. Пользователь получает один сеанс, который он всегда возобновляет при соединении, если 24 часа бездействия не истекли. Но когда я захожу на страницу в Chrome, хотя она выглядит одинаково и выполняет запросы в том же порядке, я вижу две записи в таблице сеансов. Сеансы разделяют строку агента, но идентификаторы отличаются, и журналы отметок времени указывают, что призрачный сеанс создается вскоре (в течение секунды) после сеанса, созданного для пользователя.

В целях отладки я печатал запросы на экране по мере их выполнения, и это пример того, что я вижу, когда Chrome должен открывать один сеанс и как-то вместо этого открывает два:

// Attempting to resume a session
SELECT id FROM sessions WHERE id = '4fd24a5cd8df12.62439982' AND agent = '9bcd5c6aac911f8bcd938a9563bc4eca'

// No result, so it creates a new one
INSERT INTO sessions (id, agent, start, last) VALUES ('4fd24ef0347f26.72354606', '9bcd5c6aac911f8bcd938a9563bc4eca', '1339182832', '1339182832')

// Clear old sessions
DELETE FROM sessions WHERE last < 1339096432

И вот что я вижу в базе данных потом:

id, agent, start, last
4fd24ef0347f26.72354606, 9bcd5c6aac911f8bcd938a9563bc4eca, 1339182832, 1339182832
4fd24ef0857f94.72251285, 9bcd5c6aac911f8bcd938a9563bc4eca, 1339182833, 1339182833

Я что-то упускаю из виду? Единственное, о чем я могу думать, это то, что Chrome может создавать скрытый сеанс в фоновом режиме, возможно, для сканирования страницы. Если это так, то это может стать проблемой позже, когда я начну связывать активные сеансы с записями в таблице пользователей. Я искал возможные ошибки в моем скрипте, но пока ничего не нашел, и в Firefox все работает так, как ожидалось.

Ответы на вопрос(1)

Ваш ответ на вопрос