Pregunta

PHP almacena su información de la sesión en el sistema de archivos del host del servidor de establecimiento de la sesión.En múltiples host entorno PHP, donde la carga es unintelligently distribuidos entre cada uno de los host, PHP las variables de sesión no está disponible para cada solicitud (a menos que por casualidad la solicitud se asigna el mismo host -- asumir que no tenemos control sobre el equilibrador de carga).

Este sitio, conocido como "La Guía del Autoestopista de PHP Equilibrio de Carga" sugiere reemplazar PHPs manejador de sesiones y el almacenamiento de la información de la sesión en la base de datos compartida.

Lo que, en su humilde opinión, es el mejor manera de mantener la información de sesión en un múltiplo de PHP entorno de host?

ACTUALIZACIÓN: Gracias por los comentarios.Para cualquier persona que busca un código de ejemplo, hemos encontrado un útil tutorial sobre la escritura de una Sesión de clase Manager para MySQL que puedo recomendar.

¿Fue útil?

Solución

La base de datos, o Base de datos+Memcache.Generalmente las sesiones no debe ser escrito muy a menudo.Comenzar con una solución de base de datos que sólo se escribe en la base de datos cuando los datos de la sesión ha cambiado.Memcache deben ser añadidos más tarde como una mejora de rendimiento.Un db solución va a ser muy rápido, ya que sólo están siempre buscando las claves primarias.Asegúrese de que el db tiene el bloqueo de fila, no bloqueo de tabla (myISAM).MemCache sólo es una mala idea...Si se desborda, se bloquea o se reinicia, los usuarios se cerrará la sesión.

Otros consejos

Hagas lo que hagas, no lo guarde en el servidor propio (incluso si sólo está utilizando un servidor, o en un 1+1 escenario de conmutación por error).Lo voy a poner en un callejón sin salida.

Yo diría que el uso de la Base de datos+Memcache para almacenamiento/recuperación, te va a mantener fuera de la de Zend captar (y me creo las cosas se rompen en algún momento con Zend).Ya que usted será capaz de fácilmente la partición por el id de usuario o SessionID incluso yendo con MySQL va a dejar las cosas muy escalable.

(Edición:además, va con DB+Memcache no obligarán a una parte comercial, no se une a PHP o bien-algo que usted puede ser feliz por abajo de la carretera)

Almacenar los datos de sesión en una compartido db funciona, pero puede ser lento.Si realmente es un gran sitio, memcache es probablemente una mejor opción.

Dependiendo de su presupuesto del proyecto, también se puede considerar Zend Platform para su máquinas de producción, que además de un montón de otras características, incluye configurable período de sesiones de la agrupación, la cual funciona como una especie de CDN hace.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top