Hola, ¿Es / será posible en php mantener variables de sesión en un entorno distribuido (balanceo de carga)? Un saludo
1 Respuesta
Respuesta de bankhacker
1
1
bankhacker, Objetivos: Trabajar como WebMaster Freelance en proyectos de...
Ya es posible, con PHP4. La función session_set_save_handler() permite grabar la información de sesión es una base de datos común a los servidores redundantes, por ejemplo un servidor central MySQL. De esta forma, la información de sesión es igualmente accesible y modificable desde cualquier servidor web del balance de carga. Si mi respuesta te ha servidor de ayuda.
¿Cuál es el funcionamiento exacto del sistema? Si se almacena la información En la base de datos como se relaciona con el usuario. ¿No puede haber algún problema ante alguna operación del usuario?
Antes se me ha olvidado comentarte otra posibilidad, que es sin necesidad de usar la función session_set_save_handler() y sin MySQL, PHP gestiona las sesiones mediante ficheros en /tmp. Si compartes en un punto común este directorio entre tus servidores, con un NFS, por ejemplo, todos los servidores podrán leer y escribir en estos ficheros, siempre y cuando no se estén usando dos ficheros iguales de sesión desde 2 servidores distintos, lo cual no debería ocurrir nunca. Ya no te sé responder con exactitud, pues no lo he hecho nunca, pero me imagino que tanto usando el sistema compartido de ficheros, como la base de datos MySQL, cada sesión será un registro o un fichero cuyo nombre o id sea único e irrepetible. Por ejemplo un número de 32 bits a partir de una función MD5 te lo daría. Tú no debes preocuparte por esto, dado que es el servidor de PHP quien genera dichos nombres o ids. Lo que quiero decirte es que al ser irrepetibles, no tendrás problemas de superposición de sesiones. Que ¿cómo se relaciona con el usuario? La relación sesión-usuario la controla el programador. PHP sólo controla el concepto sesión. Un mismo usuario puede trabajar con 2 sesiones distintas, a no ser que de alguna forma artificial asociemos siempre usuario con sesión mediante cookies o solicitud de login.