2009-10-04 23 views
39

¿Puede alguien decirme cuánto durará mi sesión de los datos a continuación? - No estoy seguro de cuál me dice¿Cuánto tiempo durará mi sesión?

session.auto_start Off Off 
session.bug_compat_42 Off Off 
session.bug_compat_warn On On 
session.cache_expire 180 180 
session.cache_limiter nocache nocache 
session.cookie_domain no value no value 
session.cookie_httponly Off Off 
session.cookie_lifetime 0 0 
session.cookie_path//
session.cookie_secure Off Off 
session.entropy_file no value no value 
session.entropy_length 0 0 
session.gc_divisor 1000 1000 
session.gc_maxlifetime 1440 1440 
session.gc_probability 1 1 
session.hash_bits_per_character 5 5 
session.hash_function 0 0 
session.name PHPSESSID PHPSESSID 
session.referer_check no value no value 
session.save_handler files files 
session.save_path /var/lib/php/session /var/lib/php/session 
session.serialize_handler php php 
session.use_cookies On On 
session.use_only_cookies Off Off 
session.use_trans_sid 0 0 

Respuesta

77

En general se puede decir session.gc_maxlifetime especifica el máximo de por vida desde el último cambio de sus datos de sesión (no la última vez que fue llamado session_start!). Pero el manejo de la sesión de PHP es un poco más complicado.

Porque los datos de sesión son eliminados por un recolector de basura que solo se llama por session_start con una probabilidad de session.gc_probability dividida por session.gc_divisor. Los valores predeterminados son 1 y 100, por lo que el recolector de basura solo se inicia en solo el 1% de todas las llamadas session_start. Eso significa que incluso si la sesión ya está agotada en teoría (los datos de la sesión se han cambiado más de session.gc_maxlifetime segundos atrás), los datos de la sesión pueden utilizarse durante más tiempo.

Por este motivo, le recomiendo que implemente su propio mecanismo de tiempo de espera de la sesión. Vea my answer to How do I expire a PHP session after 30 minutes? para más detalles.

+0

¿Cómo interactúa session.cache_expire con esto? – matteo

+5

'session.cache_expire' solo influye en el almacenamiento en caché HTTP de la respuesta del servidor, pero no tiene ninguna influencia en la caducidad de la sesión. – Gumbo

+1

Oh, ya veo, cache_expire funciona junto con cache_limiter. La documentación de PHP no está muy clara al respecto. No pude descifrar una sola palabra de lo que está documentado aquí: http://es1.php.net/manual/en/function.session-cache-expire.php hasta que leí esto: http: //es1.php .net/manual/es/function.session-cache-limiter.php Gracias @Gumbo – matteo

17

Este es el único. La sesión durará 1440 segundos (24 minutos).

session.gc_maxlifetime 1440 1440 
5

If session.cookie_lifetime is 0, the session cookie lives until the browser is quit.

EDITAR: Otros han mencionado la configuración session.gc_maxlifetime. Cuando se produce una recolección de basura de la sesión, el recolector de basura eliminará cualquier dato de sesión que no se haya accedido en más de session.gc_maxlifetime segundos. Para establecer el tiempo de vida de la cookie de sesión, llame al session_set_cookie_params() o defina la configuración de PHP session.cookie_lifetime. Si esta configuración es mayor que session.gc_maxlifetime, debe aumentar session.gc_maxlifetime a un valor mayor o igual que el tiempo de vida de la cookie para asegurarse de que sus sesiones no caduquen.

+0

Gracias, cuando cierro el navegador y vuelvo a abrir la página, ¿sigo viendo el mismo ID de sesión? –

+1

Si su navegador aún se estaba ejecutando, entonces, sí. La cookie de sesión solo caduca cuando se cierra la aplicación del navegador. –

+0

La cookie sí, pero la sesión en sí expirará después de 24 minutos sin ninguna actividad, incluso si mantiene el navegador abierto. –

Cuestiones relacionadas