ti-enxame.com

Substituir sessão php padrão

Estou construindo um aplicativo AngularJs usando o joomla em segundo plano. O aplicativo AngularJs é carregado uma vez e depois chama o servidor sempre por meio do ajax. Algumas chamadas acontecem simultaneamente. Se eu estiver usando a sessão padrão PHP nessas chamadas, o php processará uma chamada por vez. Então, escrevi meu próprio manipulador de sessões para permitir mais de uma chamada por vez e eu gostaria de usar isso no lugar da sessão padrão do php.Existe uma maneira fácil de fazer isso no Joomla ou terei que escrever minha própria classe JSession?

Editar

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

Se você chamar esse arquivo duas vezes no mesmo navegador ao mesmo tempo, a primeira chamada retornará em 10 segundos, a segunda chamada retornará em 20 segundos. A classe JSession chama session_start (), portanto o joomla tem o mesmo comportamento.

Editar

Quando usamos a opção de banco de dados ou estendemos o JSessionStorage com o próprio manipulador de sessões, o joomla usa session_set_save_handler() e altera o comportamento padrão de bloquear a sessão. Então, eu estava errado quando digo que chamar session_start envolve bloquear a sessão.

3
csbenjamin

Você não precisa escrever sua própria classe JSession, mas precisará escrever uma classe estendendo JSessionStorage para integrar-se ao tratamento de sessões do Joomla.

Muito provavelmente você terá problemas ao tentar definir o manipulador de sessões através da Configuração Global. Substitua JFormFieldSessionHandler por uma versão que inclua seu manipulador ou apenas especifique-o manualmente em configuration.php. No entanto, a última opção significa que você poderá ter problemas ao tentar usar a Configuração Global no futuro.

3
Rouven Weßling

Edit: Parece que a resposta não está correta.

O manipulador de sessões Joomla padrão (banco de dados) não bloqueia a sessão durante o processamento. Então você não precisa se preocupar com o bloqueio.

De qualquer forma, é possível que você substitua os dados da sessão da primeira solicitação pelos dados da segunda solicitação.

4
Harald Leithner

Bem-vindo ao mundo das chamadas assíncronas. Meu conselho é não usar sessões para as chamadas AJAX/RESTful. O máximo que eu faria é ter algum tipo de token de autenticação para que você saiba quem está fazendo a ligação.

3
Andrew Eddie

O Joomla permite criar novos backends de armazenamento de sessão, o que pode resolver seu problema. Apenas estenda JSessionStorage com sua classe de sessão personalizada e, em seguida, você pode definir o manipulador no seu arquivo configuration.php diretamente. (Os backends de armazenamento de sessão personalizados não aparecem na configuração global de administração.)

2
Don Gilbert