Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com SESSION


Mario M. F

Pergunta

Galera, boa tarde.

Sou novo no forum e já inicio com um problema infelizmente.

Temos um sistema na empresa de controle de estoque. Temos um módulo nesse sistema que é para inclusão de notas fiscais, onde nesta inclusão alimentamos o nosso estoque.

Durante o processo de inclusão, os ítens da nota fiscal são gravados em um arquivo de sessão mais ou menos como se fosse um carrinho de compras.

O problema é o seguinte:

Algumas vezez, ao tentar finalizar a nota fiscal, o PHP retorna que a sessão não existe e o usuário perde tudo. Neste momento, ao dar o F5 para atualizar o navegador, o usuário volta para a tela de login. Aparentemente indica que a sessão morreu.

Minha dúvida é:

Como posso saber se a sessão está morta mesmo ou não? pois meu receio é que meu arquivo de sessão do "carrinho de compras" da entrada de nota fiscal esteja muito grande, estourando um possível limite de tamanho do mesmo.

À seguir a função que grava a sessão dos itens da nota fiscal.

function gravar_sessao($acao,
                            $btadd=null,
                            $plu=null,
                            $qtd=null,
                            $embalagem=null,
                            $qtd_embalagem=null,
                            $valor=null,
                            $ipi=null,
                            $valor_desconto=null,
                            $icms=null,
                            $red_base=null,
                            $iva=null,
                            $cfop=null,
                            $descricao=null,
                            $composicao = null){
        /*função que grava os ítens na sessão    $_SESSION['itens_nf']*/
        /*int acao,int btadd,int plu,float qtd,int embalagem,float qtd embalagem,float valor, float ipi, float valor_desconto,float icms,float red_base    ,float iva, float cfop, float descricao, char composicao*/
        if($acao == 'gravar_sessao'){
            $_REQUEST=array_map("utf8_decode",$_REQUEST);
            $plu_recebe = $plu;
            $qtd_recebe = $qtd;
            $embalage_recebe = $embalagem;
            $qtd_embalagem_recebe = $qtd_embalagem;
            $valor_recebe = str_replace(",",".",$valor);
            $ipi_recebe = $ipi;
            $valor_desconto_recebe= $valor_desconto;
            $icms_recebe = $icms;
            $red_base_recebe = $red_base;
            $iva_recebe = $iva;
            $cfop_recebe = $cfop;
            $descricao_recebe = utf8_decode($descricao);
            $composicao_recebe = $composicao;
            $_SESSION['itens_nf'][$plu_recebe]=array("plu"=>$plu_recebe,
                                              "descricao"=>htmlspecialchars($descricao_recebe),    
                                              "qtd"=>$qtd_recebe,
                                              "embalagem"=>$embalage_recebe,
                                              "qtd_embalagem"=>$qtd_embalagem_recebe,
                                              "valor"=>$valor_recebe,
                                              "ipi"=>$ipi_recebe,
                                              "valor_desconto"=>$valor_desconto_recebe,
                                              "icms"=>$icms_recebe,
                                              "red_base"=>$red_base_recebe,
                                              "iva"=>$iva_recebe ,
                                              "cfop"=>$cfop_recebe,
                                              "composicao"=>$composicao_recebe);
            
            }
            
            //return true;
        }

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

De ante mãop não existe erro, agora tem que ver o que acontece no procedimento de cada pagina.

checa as sessoes que estão abertas.

<pre>

<?php 
session_start();
print_r($_SESSION) 
?>

</pre>

Ve o que retona e verifica se existe as SESSOES!

Link para o comentário
Compartilhar em outros sites

  • 0

Depende, ele grava essas sessoes todas para cada pedido? verifica o memory_limit do servidor.

<?php print ini_get("memory_limit"); ?>

Vê se esta muito baixo, mais ele daria um erro, no seu caso ele esta apagando, verifica se tu não está usando as sessoes em uma pagina que não exista o session_start() ou algum canto no script onde você possa esta repitindo a função de gravar_sessao()

Link para o comentário
Compartilhar em outros sites

  • 0

E aí pessoal?

Então, seguindo o último conselho do Jefferson, eu dei uma olhada no meu arquivo que chama a função gravar_sessão, para ver se ela estava sendo chamada mais de uma vez durante a execução.

Realmente isso não acontece.

Sendo assim, vamos fazer a inclusão de nota fiscal de maneira diferente. Ao invés de usar SESSION para armazenar os ítens como se fosse um carrinho de compras, vamos armazenar os ítens no banco de dados durante o lançamento da nota fiscal.

Eu sei que isso não é o mais ideal, uma vez que eu vou consumir conexão ao banco de dados a cada ítem que eu lançar, mas isso vai evitar a perda de um trabalho todo, por parte do usuário do sistema, pois tem vezes que ele ( o usuário) está lançando uma nota fiscal de mais de 2 folhas e quando vai gravar acaba perdendo tudo por falta da sessão aberta.

Então pensamos em fazer o sistema verificar se a sessão ainda existe ( o que já faz) porém quando não existir ele abre uma div para que o usuário faça o login novamente e depois disso continua lançando a nota fiscal.

Obrigado Jefferson pela ajuda e atenção.

Abraço a todos.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...