2010-01-11 16 views
9

Mi sono appena trasferito dal mio framework MVC a uno supportato dalla comunità (CodeIgniter). Sto solo convertendo le mie sessioni nel CodeIgniter functions e sto notando che, per impostazione predefinita, memorizzano i dati della sessione in un cookie crittografato. L'alternativa che offrono sono sessioni di database ma non sessioni di file lato server come la libreria nativa di PHP.Devo utilizzare Sessioni database o Sessioni file PHP nativi?

Ora sul mio sito, creerò un pannello di back-end sicuro in modo che un cookie crittografato non sembri l'opzione intelligente ma non desidero in particolare dover connettersi al mio database inutilmente in quanto non è molto veloce (hosting condiviso).

mi chiedo che cosa il ragionamento dietro di loro che non supportano le sessioni native sarebbe e se sessioni di database o sessioni di file sul lato server sono generalmente considerata come la migliore opzione.

Grazie.

risposta

12

In sostanza, per memorizzare i dati della sessione, le persone in genere utilizzare uno dei tre soluzioni:

  • file (il default)
  • banca dati
  • memcached

Files è la il più usato, dato che è il default - e funziona perfettamente bene nella maggior parte dei casi - ma c'è almeno una situazione in cui non funziona: quando hai molti server e gli utenti sono bilanciati in carico su quelli (ad es. quando 1 utente non è sempre sullo stesso server).

In questo tipo di situazione, è necessario disporre di un posto centrale/condiviso per archiviare le sessioni e i database si adattano a tale descrizione; e sono facili da configurare - e le applicazioni PHP generalmente funzionano con un database.

E come i database non scala molto bene, in particolare per la scrittura, a volte usa, invece, qualcosa come memcached: un Meccanismo che memorizza i dati nella RAM (più veloce), attraversato da molti server che vuoi/necessità (bilancia bene).


Quale soluzione dovresti usare?

Bene, in quali di queste situazioni sei?

  • file sono OK, almeno fintanto che un utente è sempre sullo stesso server
  • Se avete bisogno di un database per l'applicazione, è possibile memorizzare le sessioni nel database: senza bisogno di alcuna installazione additionnal (Ad esempio, Drupal esegue questa operazione, per impostazione predefinita).
  • memcached richiede più installazione, ma è probabilmente la soluzione migliore se si dispone di un traffico davvero intenso ...