ti-enxame.com

O que poderia fazer com que os dados da sessão do Joomla desaparecessem intermitentemente?

Minha pergunta é inspirada em um problema antigo que acho que não resolvi adequadamente. Eu estava armazenando informações de matriz em uma sessão do Joomla que eu acessei pouco tempo depois. Eu descobri que intermitentemente a variável Joomla que eu havia definido estava ausente.

Por interesse, você pode ver meu problema original em https://stackoverflow.com/questions/13052495/how-to-prevent-race-conditions-when-writing-reading-joomla-session-variables-fr =

Não vou fazer a mesma pergunta, mas esperava obter respostas para as seguintes perguntas relacionadas.

  1. O que poderia fazer com que os dados da sessão do Joomla desaparecessem intermitentemente?
  2. Como eu poderia solucionar problemas de variáveis ​​de sessão do Joomla ausentes?
1
TryHarder

Baseando-se no que eu vi, existem algumas maneiras de os dados da sessão "desaparecerem".

  1. A primeira maneira é exatamente o que as pessoas já mencionaram ou sugeriram. É aqui que você atinge o limite do cronômetro da sessão. Quando o timer da sessão é atingido, a sessão é apagada da memória.

  2. Quando você se desconecta, seus dados da sessão são limpos. Depende de qual função de logout é chamada e qual versão do Joomla. Eu já vi alguns casos em que apenas a parte da sessão do Joomla é limpa. Também vi casos em que todo o global $ _SESSION é limpo.

  3. Também vi algumas instâncias de tentativa de armazenar dados de sessão por meio das APIs do Joomla, que não armazenam nada, ou armazenam em um local que você não espera. Depois de definir uma variável de sessão, despeje a sessão para garantir que ela esteja definida e onde você pensa que está.

  4. Este é mais comum para dados aleatórios de sessões ausentes. É quando você atinge o limite www/não-www ou http/https. Às vezes, o Apache (o servidor principal dos sites Joomla) fica confuso quando o mesmo navegador ultrapassa os limites www/não-www ou http/https. Algumas configurações lidam com isso muito bem, outras não, mas é bastante comum. Aqui está a parte interessante: ele nem precisa ser o link principal ao qual ele está vinculado que atravessa essa ponte; pode ser um CSS, arquivo JS, imagem, etc. incluídos na mesma página que está no site www/non- ponte www ou http/https que pode estar causando o problema. Isso é muito raro hoje em dia, mas eu já vi isso em mais de um site.

Essas são as únicas maneiras pelas quais consigo pensar de imediato que podem mostrar esse comportamento.

2
Donald Champion

Outra possibilidade é que os dados da sessão sejam truncados devido a caracteres de idioma. Se o armazenamento no banco de dados verificar que os dados da sessão estão completos (fechado {}).

Por exemplo, se a sessão tentar armazenar Montreal, ela poderá ser truncada para Montr. Tudo depois que o Montr é perdido e os dados da sessão podem ser atualizados.

1
mwf