Y cómo "cierras sesión" tú?
Para que la sesion cambie de ID deberias:
- o hacer un session_destroy (a esto llamas cerrar?)
- o que el navegador se cierre y en concecuencia se elimine la cookie de sesion.
Tengo la duda de si realmente el valor de tu session.gc_maxlifetime es 1440. Porque claramente en ese caso la sesion no deberia pasar los 24 min.
Que el tiempo de una sesion sea variable es comprensible por el manejo que php le da a su proceso "garbage collection", el cuál es el encargado de cada ciertos "inicio de sesion" revisar la totalidad de las sesiones y eliminar las que excedan el session.gc_maxlifetime.
Te paso un fragmento del php.ini el cual explica esto que te he dicho:
Cita: ; Define the probability that the 'garbage collection' process is started
; on every session initialization.
; The probability is calculated by using gc_probability/gc_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts
; on each request.
session.gc_probability = 1
session.gc_divisor = 1000
; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440
Con eso se explica que las sesiones tengan duraciones variables y que puedan durar mas del tiempo maximo gc_maxlifetime, pero no explica porque en tu caso las sesiones duran menos.
Hay algo que nos falta saber sobre tu código...