Chrome está creando sesiones duplicadas con la misma id.

Encontré un problema mientras revisaba mi biblioteca de sesiones hoy, y esta podría ser la primera vez que veo un problema específico del navegador en un script de back-end. Espero que alguien pueda arrojar algo de luz.

Básicamente, cómo funciona la biblioteca de sesiones es: cuando se crea una instancia, busca una cookie llamada 'id' (en forma de un resultado uniqid) en la máquina cliente. Si se encuentra una cookie, el script comprueba eso y una copia de hash de la cadena de agente de usuario contra las entradas en una tabla de sesión. Si se encuentra una entrada coincidente, el script reanuda la sesión. Si no se encuentra una cookie llamada 'id', o si no existe una entrada coincidente en la tabla de sesiones, el script crea ambas. Bastante estándar, creo.

Ahora aquí está la parte rara: en Firefox, todo funciona como se predijo. El usuario obtiene una sesión, que siempre reanudará después de la conexión, siempre que no hayan transcurrido 24 horas de inactividad. Pero cuando visito la página en Chrome, a pesar de que se ve igual y parece estar ejecutando consultas en el mismo orden, veo dos entradas en la tabla de la sesión. Las sesiones comparten una cadena de agente, pero los ID son diferentes, y los registros de marca de tiempo indican que la sesión fantasma se está creando en breve (en un segundo) después de la creada para el usuario.

Para propósitos de depuración, he estado imprimiendo consultas en la pantalla mientras se ejecutan, y este es un ejemplo de lo que estoy viendo cuando Chrome debería estar abriendo una sesión y está abriendo de alguna manera dos:

// 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

Y esto es lo que estoy viendo en la base de datos después:

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

¿Me estoy perdiendo algo obvio? Lo único en lo que puedo pensar es que Chrome podría estar creando una sesión oculta en segundo plano, posiblemente para rastrear la página. Sin embargo, si ese es el caso, podría convertirse en un problema más adelante, cuando comience a asociar sesiones activas con entradas en la tabla de usuarios. He estado buscando posibles errores en mi script, pero no he encontrado nada hasta ahora, y todo funciona como se esperaba en Firefox.

Respuestas a la pregunta(1)

Su respuesta a la pregunta