Fiz uma pesquisa an passant aqui no fórum, mas realmente acho que meu problema é meio atípico.
Possuo um sistema que está sendo acessado simultanamente por várias pessoas. Para tanto eu mantenho o registro do usuário em Session para que eu possa ter controle de quem inclui ou alterou coisas em meu banco de dados.
O Valor do código do usuário gravado na session é passado dentro das queries para serem gravados nas tabelas. Só que seguindo a recomendação da PHP ao invés de usar session_registered, session_ETC... eu uso a declaração das variáveis como $_SESSION e a leitura TAMBÉM, sempre.
Até aí tudo bem, só que, por algum motivo estranho, as vezes um ou outro registro não grava o código do usuário.
Explicando melhor:
- Cada usuário que entra no sistema tem o seu código (ID) que é gravado na $_SESSION['user_id'], quando ele executa o login.
- Em seguida ele entra com uma lista de dados sequenciados no sistema. Digitadores entrando vários e vários relatórios a cada 2 minutos. São cerca de 1000 digitadores entrando contratados, e acaba tendo uma média de 50 acessos simultâneos.
- A Validação do usuário se dá através dessa mesma váriavel. A cada visita a página de inclusão e a página de registro dos dados há uma validação que em caso da $_SESSION['user_id'] Não esteja setada (!isset), seja igual a vazio (== '') ou igual a zero (== 0) ele retorne para a página de login e destrua qualquer outra sessão existente.
- A cada registro gravado, é inserido ,além dos dados, o código do usuário na tabela de referência, passando o valor do $_SESSION['user_id'].
- Só que ao listar os usuários, cerca de 10% deles estão com o código igual a ZERO. Ao checar o horário da entrada e o IP do sujeito percebo que foi aleatoriamente entre uma pesquisa e outra, e não TODA a sequencia.
O que pode estar acontecendo para que haja essa SELEÇÃO natural do regsitro, pois ele grava os dados, o sujeito não é retirado do sistema por causa do ID vazio, mas ele grava o dado como 0.
Tem um detalhe fundamental que talvez seja até mesmo a raiz do meu problema: Temporariamente esse sistema está rodando num Windows 2003 Server, com Apache... Eu sei que é trágico mas espero que seja temporário.
Minhas hipóteses são:
- Concorrencia de usuários
- Tempo de leitura da session armazenada no hd pequeno
- Windows
- Forças do Mal
- Olho Gordo
- Uma cabeça de burro enterrada na minha sala.
Se alguém passou por bizarrice semelhante me dê uma LUZ.
Pergunta
fnorte
Olá Pessoal,
Fiz uma pesquisa an passant aqui no fórum, mas realmente acho que meu problema é meio atípico.
Possuo um sistema que está sendo acessado simultanamente por várias pessoas. Para tanto eu mantenho o registro do usuário em Session para que eu possa ter controle de quem inclui ou alterou coisas em meu banco de dados.
O Valor do código do usuário gravado na session é passado dentro das queries para serem gravados nas tabelas. Só que seguindo a recomendação da PHP ao invés de usar session_registered, session_ETC... eu uso a declaração das variáveis como $_SESSION e a leitura TAMBÉM, sempre.
Até aí tudo bem, só que, por algum motivo estranho, as vezes um ou outro registro não grava o código do usuário.
Explicando melhor:
- Cada usuário que entra no sistema tem o seu código (ID) que é gravado na $_SESSION['user_id'], quando ele executa o login.
- Em seguida ele entra com uma lista de dados sequenciados no sistema. Digitadores entrando vários e vários relatórios a cada 2 minutos. São cerca de 1000 digitadores entrando contratados, e acaba tendo uma média de 50 acessos simultâneos.
- A Validação do usuário se dá através dessa mesma váriavel. A cada visita a página de inclusão e a página de registro dos dados há uma validação que em caso da $_SESSION['user_id'] Não esteja setada (!isset), seja igual a vazio (== '') ou igual a zero (== 0) ele retorne para a página de login e destrua qualquer outra sessão existente.
- A cada registro gravado, é inserido ,além dos dados, o código do usuário na tabela de referência, passando o valor do $_SESSION['user_id'].
- Só que ao listar os usuários, cerca de 10% deles estão com o código igual a ZERO. Ao checar o horário da entrada e o IP do sujeito percebo que foi aleatoriamente entre uma pesquisa e outra, e não TODA a sequencia.
O que pode estar acontecendo para que haja essa SELEÇÃO natural do regsitro, pois ele grava os dados, o sujeito não é retirado do sistema por causa do ID vazio, mas ele grava o dado como 0.
Tem um detalhe fundamental que talvez seja até mesmo a raiz do meu problema: Temporariamente esse sistema está rodando num Windows 2003 Server, com Apache... Eu sei que é trágico mas espero que seja temporário.
Minhas hipóteses são:
- Concorrencia de usuários
- Tempo de leitura da session armazenada no hd pequeno
- Windows
- Forças do Mal
- Olho Gordo
- Uma cabeça de burro enterrada na minha sala.
Se alguém passou por bizarrice semelhante me dê uma LUZ.
Muito obrigado,
Fernando Norte
Bhte - MG
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.