Loja em Sessão de Dados vs armazenar em Banco de dados Sql para dados temporários
-
12-09-2019 - |
Pergunta
Eu estou querendo saber qual é mais eficiente, para armazenamento temporário de dados (relacionados a essa sessão) em uma sessão utilizando a $_SESSION variável em PHP ou armazenar e recuperar a partir de um banco de dados SQL?
Obrigado pelo seu tempo.
Solução
Tenha em mente que a variável de sessão é feito por um mecanismo de armazenamento, isto é, quando a solicitação termina a sessão é escrito pelo manipulador de sessão, por padrão, isso é um arquivo.Na próxima solicitação é puxado para trás, a partir desse ficheiro (ou qualquer outra coisa que a sessão manipulador usa).
Se você está a ler e escrever dados em todos os pedidos, ficar com um a $_SESSION variáveis, a sobrecarga de ligação, consultar e atualizar um banco de dados não será mais rápido do que o padrão $_SESSION.
Você provavelmente só quer usar um banco de dados de sessão com suporte se você estiver executando vários servidores com balanceamento e precisamos compartilhar a sessão de dados entre eles.Neste caso, se você encontrar a sobrecarga do banco de dados de sessões de estar a abrandar o seu site para um notável grau você pode considerar furando o memcached entre o servidor web e o banco de dados.
Outras dicas
Não sei muito sobre a leitura de um banco de dados ou um arquivo, mas não acho que "o acesso a dB seja mais lento que outros" é verdadeiro. Aprendi com minhas lições escolares que a latência da rede é insignificante em comparação com o acesso de E/S. E se usarmos o banco de dados para sessões, temos algumas vantagens:
Não precisamos nos preocupar com muitos servidores, porque não há sistema de arquivos diferente.
Eu também acho que armazenar/ler algo de/para um banco de dados é mais fácil do que um sistema de arquivos.
Além disso, se estivermos usando a hospedagem compartilhada, o armazenamento de sessões em um banco de dados é uma grande vantagem para a segurança.
Se eu estivesse errado, por favor me corrija. Eu ainda tenho muitas coisas para aprender. Obrigado.
Realmente depende do volume de dados que você pretende armazenar e da quantidade de tráfego que você pretende manipular. Se os dados forem mínimos e o site não precisar escalar além de um servidor da Web, use o manipulador de sessão padrão que grava os dados da sessão no sistema de arquivos do servidor da web.
Se você precisar escalar além de uma caixa, recomenda -se que você armazene seus dados de sessão em um banco de dados de memória, como memcached ou banco de dados regular. Você pode substituir o manipulador de sessão no PHP e escreva sua própria implementação para armazenar para o banco de dados ao usar $ _Session.
O mais eficiente dependerá da quantidade de dados que você deseja armazenar e do que você planeja fazer com os dados temporários. Às vezes, armazenei 5 megs nos dados da sessão no armazenamento de arquivos e foi um assassino de desempenho terrível. Mas 5 megs de estado são muito e você realmente não deve chegar lá.
De qualquer forma, você pode configurar as sessões do PHP para ser armazenado em uma tabela de banco de dados E obtenha o melhor dos dois mundos.
Ainda assim, se os dados não forem adequadamente característicos de uma sessão de usuário, você não deverá usar sessões e usar algum objeto modelo.
As sessões de PHP são mais rápidas que o acesso a banco de dados. Mas as sessões de PHP têm algumas questões conhecidas.
Você pode querer olhar para o Memcached se quiser termos de acesso muito rápido, evitando as armadilhas do gerenciamento de sessões de PHP ao mesmo tempo.