2010-01-11 9 views
9

Acabo de pasar de mi propio framework MVC a uno compatible con la comunidad (CodeIgniter). Solo estoy convirtiendo mis sesiones al CodeIgniter functions y me doy cuenta de que, de forma predeterminada, almacenan los datos de la sesión en una cookie cifrada. La alternativa que ofrecen son las sesiones de base de datos, pero no las sesiones de archivos del lado del servidor, como la biblioteca PHP nativa.¿Debo usar sesiones de base de datos o sesiones nativas de archivos PHP?

Ahora en mi sitio, construiré un panel de backend seguro para que una cookie encriptada no parezca la opción inteligente, pero no quiero tener que conectarme innecesariamente a mi base de datos ya que no es muy rápido (alojamiento compartido).

Me pregunto lo que el razonamiento detrás de ellos no apoyan sesiones nativas serían y si sesiones de bases de datos osesiones de archivos del lado del servidor son generalmente considerados como la mejor opción.

Gracias.

Respuesta

12

Básicamente, para almacenar los datos de la sesión, la gente en general, utilizar una de las tres soluciones:

  • archivos (por defecto)
  • base de datos
  • memcached

archivos es la más utilizado, ya que es el predeterminado - y funciona perfectamente bien en la mayoría de los casos - pero hay al menos una situación en la que no funciona: cuando tienes e varios servidores, y sus usuarios tienen equilibrio de carga en esos (es decir cuando 1 usuario no está siempre en el mismo servidor).

En ese tipo de situación, es necesario tener un lugar central/compartido para almacenar las sesiones, y las bases de datos se ajustan a esa descripción; y son fáciles de instalar también, y las aplicaciones PHP generalmente funcionan con una base de datos.

Y como bases de datos que no escalan bien, sobre todo para las escrituras, se utiliza a veces, en cambio, algo así como memcached: un MECANISMO que almacena los datos en la RAM (más rápido), al otro lado de tantos servidores como usted quiere/necesidad (escalas bien).


¿Qué solución debería usar?

Bueno, ¿en cuál de esas situaciones es usted?

  • archivos están bien, al menos, siempre y cuando un usuario está siempre en el mismo servidor
  • Si necesita una base de datos para su aplicación, puede almacenar las sesiones en la base de datos: hay necesidad de ninguna configuración additionnal (Por ejemplo, Drupal lo hace, de forma predeterminada).
  • memcached necesita más configuración, pero es probablemente la mejor solución si tiene mucho tráfico ...