Foros del Web » Programando para Internet » PHP »

Otra de sesiones...

Estas en el tema de Otra de sesiones... en el foro de PHP en Foros del Web. A ver amigos si me pueden ayudar a entender lo que me pasa: Estoy teniendo problemas con la expiración de las sesiones. Segun entiendo, uno ...
  #1 (permalink)  
Antiguo 25/09/2003, 11:34
 
Fecha de Ingreso: marzo-2003
Ubicación: Rosario, Argentina
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
Pregunta Otra de sesiones...

A ver amigos si me pueden ayudar a entender lo que me pasa:

Estoy teniendo problemas con la expiración de las sesiones. Segun entiendo, uno puede disponer en php.ini el tiempo en que una sesion se considera como 'viva' en el parametro: session.cookie_lifetime si el parametro session.use_cookies vale 1, el cual indica cuando una sesion va a considerarse expirada. Actualmente tengo dicho parametro en 0, lo que hace que la cookie exista literalmente "or if 0, until browser is restarted". Bueno, el tema es que después de un determinado tiempo de inactividad del usuario, "todas las sesiones" desparecen (se eliminan todos los archivos del session.save_path).
Entiendo además que se puede configurar la probabilidad de que el recolector de basura se active por cada llamada del session_start(). Dicho paramatro vale: session.gc_probability = 1 y además las sesiones se consideran como basura nunca session.gc_maxlifetime = 0.

Según leí en otro tema del foro, esta configuracion provoca que las sesiones existan hasta que el usuario reinicia el explorador... pero no funciona de esa manera...

Por otro lado: ¿un cliente puede tener dos session_id() distintos? No debería. Pero si lo hace.

Saludos y muchas gracias desde ya...
  #2 (permalink)  
Antiguo 25/09/2003, 22:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Enumerastes bastantes de las directivas que php y su tema de sesiones gestiona .. pero te faltó una más:

session.cache_expire = 0

Yo la uso a "0" propagando el SID en cookies y no tengo problema alguno como el que describes ... (y el resto de directivas como las estás usando actualmente según describistes) ..

El tema de que si un mismo cliente puede tener vários SID's ..Si, puede tener vários si son (ojo) lanzados desde scripts (páginas) que no han iniciado una sesión ...

Ejemplo:

tu index.php tienes unos cuantos links que apuntan a scripts que si que requieren de uso de sesiones y usas tu habitual session_start() ... pero, en tu index no inicias una sesion (con session_start) .. Si es así .. cada "link" que habras generará un nuevo SID pues la generación de un nuevo SID (identificador único de sesión) se basa en la propagación del SID; es decir, si ya existe un SID creado .. se toma este y se continua propagando .. si no existe .. se crea uno nuevo.

Este tema tiene directamente relación con el uso doble (a la vez) de propagación del SID por cookies (session.use_cookies=1) y a su vez del session.use_trans_sid = 1 junto con: url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fields et="

Haz tus pruebas y nos comentas. Nos servirá a todos a entender mejor como realmente funcionan las sesiones, que .. grácias a la cantidad de combinaciones posibles de estados de las directivas de dicho apartado .. se suele hacer complicado realizar un "ajuste fino" de las sesiones.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 26/09/2003, 06:13
 
Fecha de Ingreso: marzo-2003
Ubicación: Rosario, Argentina
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
Muchas gracias! creo que era lo que me faltaba, lo voy a probar.

En el manual dice:
"session.cache_expire especifica el tiempo-de-vida de las páginas de la sesión que se encuentran en el caché en minutos. "

Yo no interpreté que las 'páginas de la sesion' eran los archivos ses_....

Un saludo, Martin
  #4 (permalink)  
Antiguo 26/09/2003, 07:00
 
Fecha de Ingreso: marzo-2003
Ubicación: Rosario, Argentina
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
Funcionó...

Muchas gracias, de nuevo.
  #5 (permalink)  
Antiguo 29/09/2003, 08:43
 
Fecha de Ingreso: marzo-2003
Ubicación: Rosario, Argentina
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
Desacuerdo

Hola,

Ahora tengo inconvenientes con la eliminacion de sesiones (la felicidad nunca es completa).
Si quiero que las sesiones INACTIVAS se eliminen pasando por ej. 24 minutos, session.gc_maxlifetime = 1440, pero actualmente tiene ese valor y existen sesiones inactivas (utilizando atime) que no se eliminan y de repente... se eliminan todas juntas.

Qué significa session.gc_maxlifetime = 0, no encontré documentacion al respecto.

Gracias desde ya
  #6 (permalink)  
Antiguo 29/09/2003, 08:59
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Si no me equivoco, es el tiempo despues de la ultima modificacion de los datos de la sesion (o la ultima vez que se consultan).

Es la otra variable gc_ (no me acuerdo el nombre, algo de probability o algo asi), la que determina si se borran los ficheros de las sesiones "caducadas". Su valor es la probabilidad en procentaje de que se borren los ficheros cada vez que se ejecuta un session_start(). Es decir, si no se carga ninguna pagina con session_start() no se borra ningun ficheros. Y si la probabilidad no es 100%, pues tambien puede pasar que en esa ejecucion de session_start() tampoco toque borrar los ficheros.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 19/11/2003, 06:34
 
Fecha de Ingreso: marzo-2003
Ubicación: Rosario, Argentina
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
sessiones y command line

Hola, puedo hacer que (utilizando session.auto_start = 1) los programas que inicien en CLI no inicien la session... el problema es que dado que utilizan otro usuario (no web), luego no puedo leer las sesiones creadas.

ej.
Código PHP:
-rw-------    1 admin    admin           0 Nov 19 06:40 sess_aa1276188a6cc499ab2848992359d0a3
-rw-------    1 web      web             0 Nov 19 06:32 sess_ab2fbd82fbf5b24739de6404880de4e9
-rw-------    1 admin    admin           0 Nov 19 06:32 sess_ab6e9753c52eb0784a3bdd9460c23143
-rw-------    1 admin    admin           0 Nov 19 06:40 sess_b00a887fdd902992b2400e5cfff90a7d
-rw-------    1 admin    admin           0 Nov 19 06:36 sess_b1897d008d51ac6faa82552de66f89ee
-rw-------    1 admin    admin           0 Nov 19 06:33 sess_b19c0e02aefd9c0d3abaf35f9305b5bf
-rw-------    1 admin    admin           0 Nov 19 06:33 sess_c1e0fe283c8afd6e504073e39f58ed86
-rw-------    1 admin    admin           0 Nov 19 06:35 sess_c65d877cd11a8fc357e31cdffe25eec9 
como ven, hay sesiones de admin y de web, y mediante un script web no puedo acceder a los archivos de admin.

Gracias, Martin
  #8 (permalink)  
Antiguo 19/11/2003, 07:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Las sesiones no son compartidas por usuarios ni por clientes que las inicien .. Por eso sus SID (Identificador Unico de sesión) son diferentes y les pertene a quien las inicie.

Si requieres compartir datos entre aplicaciones (ejemplo .. esas que ejecutas bajo CLI . o las que ejecutas por HTTP bajo tu servidor HTTP) ahí tendrás que usar algún otro sistema de almacenamiento temporal de datos .. lease: un archivo de texto plano (con tu formato própio o incluso XML ..) o una Base de datos .. pero no sesiones.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 19/11/2003, 08:13
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Si has puesto session.auto_start a 1 es imposible (creo) hacer que no cree la sesion. La solucion seria poner esa directiva a 0 y poner session_start() en los scripts que lo requieran (los via web, si no te entendido mal).

Y quizas si es posible compartir sesiones entre usuarios. O por lo menos si se puede especificar a PHP el ID de la sesion con la funcion session_id() (www.php.net/session_id). No se si se podria conseguir, y en ese caso no se si seria peligroso. De todas formas, creo que es mejor lo que comenta Cluster para compartir informacion entre usuarios.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 27/11/2003, 11:16
 
Fecha de Ingreso: marzo-2003
Ubicación: Rosario, Argentina
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
Muchas Gracias, veré como lo manejo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:49.