Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Variables de sesión

Estas en el tema de Variables de sesión en el foro de PHP en Foros del Web. Hola buenas ante todo muchas gracias. Mi problema: Tengo un sitio web donde se pueden subir archivos a mi servidor (propio, localhost). Mi pregunta es, ...
  #1 (permalink)  
Antiguo 30/11/2013, 08:49
 
Fecha de Ingreso: julio-2012
Mensajes: 18
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Variables de sesión

Hola buenas ante todo muchas gracias. Mi problema:

Tengo un sitio web donde se pueden subir archivos a mi servidor (propio, localhost). Mi pregunta es, ¿mientras un usuario sube un archivo, se le puede caducar la variable de sesión?

Sobre este aspecto el php.ini lo tengo por defecto y como uso datos de la variable de sesión en cuanto termina la subida, necesito que no se caduque. Pero no estoy seguro de si lo más sensato (en caso de que SI se caduquen mientras se sube un archivo) sería darles 5 horas hasta que caduquen (tiempo máximo que tengo configurado para la subida de ficheros pesados).

Gracias.

(Esta es la configuración por defecto del php.ini:
session.gc_maxlifetime=1440
en segundos)
  #2 (permalink)  
Antiguo 30/11/2013, 09:08
Avatar de Cuervoo  
Fecha de Ingreso: octubre-2013
Mensajes: 165
Antigüedad: 10 años, 6 meses
Puntos: 43
Respuesta: Variables de sesión

Y pero si tarda más de 5 horas en subir en mucho. Igual de ultima podés usar cookies.
  #3 (permalink)  
Antiguo 30/11/2013, 09:32
 
Fecha de Ingreso: julio-2012
Mensajes: 18
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Variables de sesión

Gracias por la respuesta.

Que 5 horas sea demasiado es relativo. Si el archivo es muy pesado y el usuario tiene una velocidad de subida baja es comprensible.

De todas formas, ese no es el debate. Con respecto a las cookies no me son una opción.

Lo que desconozco es si mientras un usuario sube un archivo, la variable de sesión puede llegar a caducar.
  #4 (permalink)  
Antiguo 30/11/2013, 09:39
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Variables de sesión

Antes de eso la pagina te tirara el error de time out si no lo tienes bien configurado el servidor.
Si tienes un server que te permite que cada usuario pueda ejecutar mas de un script sin esperar a que termine el actual, lo que puedes es crear una llamada ajax para que ejecute un archivo php que lo unico que haga sea iniciar session_start, para que de ese modo se reinicie la cuenta de session_expire.
  #5 (permalink)  
Antiguo 30/11/2013, 09:39
Avatar de Cuervoo  
Fecha de Ingreso: octubre-2013
Mensajes: 165
Antigüedad: 10 años, 6 meses
Puntos: 43
Respuesta: Variables de sesión

Me mataste con esa pregunta en concreto pero yo creo que no, porque mientras esté subiendo, el proceso se está ejecutando, y no creo que php elimine variables relacionadas a un proceso mientras esté corriendo.

Hacé la prueba, ponele que caduquen en 1 minuto, y subí un archivo que tarde 3 o 4. Y ahí vas a ver.

Si lo hacés decime qué pasó que eso no lo sé y en caso que las elimine estaría bueno saberlo.
  #6 (permalink)  
Antiguo 30/11/2013, 10:11
 
Fecha de Ingreso: julio-2012
Mensajes: 18
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Variables de sesión

Muchas gracias.

Cambie el valor a 30s y no perdí la sesión (aun sin estar haciendo nada). Investigué un poco más y esta es la verdadera función que regula el tiempo: session.cookie_lifetime, que por defecto es 0, es decir, hasta que se cierre el navegador. Según he podido comprender PHP no caduca variables de sesión por defecto.

Después de esto, ¿entonces para que sirve session.gc_maxlifetime? La cual esta configurada por defecto a 1440 segundos (este es el valor que cambié a 30 y la variable no caducó).

Por favor, si alguien conoce algo más sobre este tema ruego lo exponga aquí.
  #7 (permalink)  
Antiguo 30/11/2013, 10:15
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Variables de sesión

lo que puedes hacer tambien es subirle el tiempo de vida de session al script que recibe el fichero.
Como no se el metodo de trasmision que usas para el session id te pongo las dos

Código PHP:
Ver original
  1. ini_set("session.gc_maxlifetime","86400"); // Esto cambiaria el tiempo de caducidad a 86400 segundos = 1 dia

Si usas cookies para las sessiones

Código PHP:
Ver original
  1. ini_set("session.cookie_lifetime","86400"); // Esto cambiaria el tiempo de vida de la cookie de session a 86400 segundos = 1 dia

Estos cambios solo tienen efecto en las paginas que contengan session_start() y debe estar escrito despues de esta misma para que tenga efecto.

En los scripts que instancies session_start y no le cambies el tiempo de vida, tomaran los valores que esten definidos en php.ini.
  #8 (permalink)  
Antiguo 30/11/2013, 10:17
Avatar de Cuervoo  
Fecha de Ingreso: octubre-2013
Mensajes: 165
Antigüedad: 10 años, 6 meses
Puntos: 43
Respuesta: Variables de sesión

Si las elimina en ese tiempo, si no lo hace tenés algún problema, de configuración o algo por el estilo. Pero las variables de sesión tienen que caducar.
  #9 (permalink)  
Antiguo 30/11/2013, 10:20
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Variables de sesión

caducan dependiendo del metodo que tenga configurado php.ini para la transmision del session_id.
Si lo envias por cookie tomara el valor de session.cookie_lifetime pero sin encambio si lo envias junto a la peticion http tomara el valor de session.gc_maxlifetime
La configuracion que tiene que ver con el metodo de transmision del session_id son

Cita:
session.use_cookies
session.use_only_cookies
session.cookie_httponly
Por cierto e estado mirando y el tiempo de expiracion empieza una vez php a respondido a la peticion, o dicho de otro modo, el tiempo de vida es entre peticiones realizadas, con lo que no incruye el tiempo de ejecucion del script.

Última edición por Dalam; 30/11/2013 a las 10:35
  #10 (permalink)  
Antiguo 30/11/2013, 15:22
 
Fecha de Ingreso: julio-2012
Mensajes: 18
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Variables de sesión

Dalam estás diciendo que no tengo problema? es decir, que no se me van a caducar las variables de sesión mientras el script de subida sigue en funcionamiento?

Si esto es así sería perfecto.

Muchas gracias.
  #11 (permalink)  
Antiguo 30/11/2013, 22:37
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Variables de sesión

Haz la prueba, en php.ini define a session.use_only_cookies a true y bajale el tiempo de vida.
Luego create un script, inicias sesion, crea una variable de session con un valor que quieras, le pones un sleep con una duracion mayor a la que definiste en la vida de la cookie y por ultimo haces un echo de la variable de session que creaste.
Si te la escribe es que no caduca.

Luego para comprobar que la cookie caduca, crea otro script, inicias sesion y pones un print_r a la session. Esperas un poco mas de tiempo del que le pusiste de vida a la cookie en el otro script y lo ejecutas.
Si te escribe la variable que escribiste en el otro script es que la session no caducó.
  #12 (permalink)  
Antiguo 01/12/2013, 06:20
 
Fecha de Ingreso: julio-2012
Mensajes: 18
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Variables de sesión

Hice la prueba y la sesión no caducó. No me ha quedado muy claro pero parece que no voy a tener problemas ya que el tiempo de expiración cuenta desde scripts finalizados.

Muchas gracias a todos y supongo que voy a dar el tema como finalizado
  #13 (permalink)  
Antiguo 01/12/2013, 08:09
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Variables de sesión

Php hace mal el trabajo con las sesiones si lo que quieres es que expire o que expire en cierto momento lo que deberias hacer es insertar los datos de la cookie de esta forma

Código PHP:
Ver original
  1. $tiempoDeVida=600; //Para 10 min
  2. setcookie(session_name(),session_id(),time()+$tiempoDeVida);

Etiquetas: localhost, php.ini, sesión, session, upload, variable
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 15:17.