it-swarm-es.tech

Anular sesión de php predeterminada

Estoy construyendo una aplicación AngularJs usando joomla en segundo plano. La aplicación AngularJs se carga una vez y luego llama al servidor siempre a través de ajax. Algunas llamadas suceden simultáneamente. Si estoy usando la sesión predeterminada PHP sesión en esas llamadas, php procesará una llamada a la vez. Entonces, escribí mi propio controlador de sesión para permitir más de una llamada a la vez y yo me gustaría usar eso en lugar de la sesión predeterminada de php. ¿Hay una manera fácil de hacer esto en Joomla o tendré que escribir mi propia clase JSession?

Editar

<?php
    session_start();
    sleep(10);
    echo "Hello";
?>

Si llama a este archivo dos veces en el mismo navegador al mismo tiempo, la primera llamada volverá en 10 segundos, la segunda volverá en 20 segundos. La clase JSession llama a session_start (), por lo que joomla tiene el mismo comportamiento.

Editar

Cuando usamos la opción de base de datos o ampliamos JSessionStorage con un controlador de sesión propio, joomla usa session_set_save_handler() y cambia el comportamiento predeterminado de bloquear la sesión. Entonces, me equivoqué cuando digo que llamar a session_start implica bloquear la sesión.

3
csbenjamin

No tiene que escribir su propia clase JSession, pero deberá escribir una clase que extienda JSessionStorage para integrarse con el manejo de sesión de Joomla.

Lo más probable es que tenga problemas al intentar configurar el controlador de sesión a través de la Configuración global. Anule JFormFieldSessionHandler con una versión que incluya su controlador o simplemente especifíquelo manualmente en configuration.php. Sin embargo, la última opción significa que podría tener problemas cuando intente utilizar la Configuración global en el futuro.

3
Rouven Weßling

Editar: Parece que la respuesta no es correcta.

El controlador de sesión predeterminado de Joomla (base de datos) no bloquea la sesión durante el procesamiento. Para que no tenga que preocuparse por el bloqueo.

De todos modos, es posible que anule los datos de esa sesión de la primera solicitud con los datos de las segundas solicitudes.

4
Harald Leithner

Bienvenido al mundo de las llamadas asincrónicas. Mi consejo es que no use sesiones para las llamadas AJAX/RESTful en absoluto. Lo máximo que haría es tener algún tipo de token de autenticación para que sepa quién está haciendo la llamada.

3
Andrew Eddie

Joomla le permite crear nuevos backends de Almacenamiento de sesión, que pueden resolver su problema. Simplemente extienda JSessionStorage con su clase de sesión personalizada, y luego puede configurar el controlador en su archivo configuration.php directamente. (Los backends de almacenamiento de sesión personalizados no se muestran en la configuración de administración global).

2
Don Gilbert