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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top