Pregunta

Me pregunto que es más eficiente, para almacenar datos temporales (relacionados con esa sesión) en una sesión utilizando la variable $ _SESSION en PHP o de almacenamiento y recuperación de una base de datos SQL?

Gracias por su tiempo.

¿Fue útil?

Solución

Tenga en cuenta la variable de sesión está respaldado por un mecanismo de almacenamiento, es decir, cuando la solicitud termina la sesión se escribe por el gestor de sesiones, por defecto, ésta está en un archivo. En la siguiente solicitud se retiró de ese archivo (o cualquier otra cosa que el manejador de sesión utiliza).

Si está leyendo y escribiendo estos datos en cada petición, sólo se adhieren con las variables $ _SESSION, la sobrecarga de la conexión, consultar y actualizar una base de datos no será más rápido que el valor por defecto $ _SESSION.

Es probable que sólo alguna vez desea utilizar una sesión de base de respaldo si está ejecutando varios servidores con equilibrio de carga y la necesidad de compartir los datos de la sesión entre ellos. En este caso, si encuentra la sobrecarga de las sesiones de base de datos para ser ralentizar su sitio en un grado notable que podría considerar que se pega memcached entre el servidor web y la base de datos.

Otros consejos

No sé mucho acerca de la lectura de una base de datos o un archivo, pero no creo que el "acceso DB es más lento que los demás" es cierto. He aprendido de mis lecciones de la escuela que la latencia de red es insignificante en comparación con el acceso de E / S. Y si usamos DB para sesiones, tenemos algunas ventajas:

No tenemos que preocupado por muchos servidores, porque no existe un sistema de archivos diferente.

también pienso que almacenar / leer algo a / desde una base de datos es más fácil que un sistema de archivos.

Además, si estamos usando alojamiento compartido, el almacenamiento de sesiones en una base de datos es una ventaja importante para la seguridad.

Si yo fuera mal, por favor, corríjanme. Aún tengo muchas cosas que aprender. Gracias.

Realmente depende del volumen de datos que se va a almacenar y la cantidad de tráfico que va a manejar. Si los datos es mínimo y el sitio no tiene que escalar más allá de un servidor web, por todos los medios utilizan el gestor de sesiones por defecto que escribe los datos de la sesión en el sistema de archivos del servidor web.

Si necesita escalar más allá de un cuadro, se recomienda que se almacenan los datos de la sesión en cualquiera de una base de datos de memoria como base de datos de memcached o regular. Puede anular el gestor de sesiones en PHP y escribir su propia aplicación para almacenar la base de datos cuando se utiliza $ _SESSION.

Lo que es más eficiente dependerá de la cantidad de datos que desea almacenar y qué es lo que va a hacer con los datos temporales. A veces me he guardado 5 megas de datos de la sesión en el almacenamiento de archivos, que era un asesino rendimiento horrible. Pero 5 megas de Estado es un montón y que realmente no deberían llegar allí.

De todos modos se puede configurar sesiones de PHP para ser almacenó en una tabla de base de datos y obtener lo mejor de ambos mundos.

Sin embargo, si los datos no es propiamente característico de una sesión de usuario, entonces no debería usar sesiones y utilizar un objeto modelo en su lugar.

sesiones de PHP son más rápidos que el acceso DB. Pero las sesiones de PHP tienen algunos problemas conocidos .

Es posible que desee ver en memcached si desea que los tiempos de acceso muy rápido, evitando los escollos de la gestión de sesiones de PHP al mismo tiempo.

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