IIS Web Farms - PHP sessions in SQL Server

In ASP.Net è estremamente semplice configurare SQL Server per lo storage delle sessioni.
Questo permette una maggiore scalabilità delle applicazioni un una web farm, evitando soluzioni di client affinity.
In questo post non entro nel merito delle virtù dei dati in sessione. Tutti vorremmo request stateless, ma ahimè...

Venendo all'oggetto del post, PHP offre la possibilità di scrivere un propro session handler, slegandosi dalla soluzione file based presente di default. Con una veloce ricerca in rete, si trova parecchio in relazione a MySQL, ma ben poco per quanto concerne SQL Server.

Nell'ottica di facilitare l'integrazione di PHP nell'ecosistema Microsoft, potete trovare qui uno script che ho creato per il session management su SQL Server. Per utilizzarlo è sufficiente effettuare un include_once mssql_session_handler.inc nei vostri sorgenti PHP.

I parametri di connessione alla base dati: server, database, utente password, si trovano in cima allo script. Chiaramente conviene centralizzarne la configurazione altrove.

Le sessioni vengono salvate in una singola tabella con la seguente struttura:

CREATE TABLE Session
(
    sesskey varchar(32) PRIMARY KEY,
    expiry int NOT NULL,
    value varchar(max) NOT NULL
)

Infine, nel file PHP.ini, occorre specificare quale tipologia di session handler si intende utilizzare (di default è "files"):

session.save_handler = user

Per quanto concerne la configurazione non c'è altro. Per finire, le API per il session management restano invariate, il che significa che per le applicazioni si tratta di un'operazione trasparente.


Alessandro Pilotti
[ MVP ASP.Net / IIS ]

Technorati Tags: , ,

posted @ giovedì 7 luglio 2011 00:25

Print

Comments on this entry:

# re: IIS Web Farms - PHP sessions in SQL Server

Left by LudovicoVan at 07/07/2011 02:33
Gravatar
> non entro nel merito delle virtù dei dati in sessione. Tutti vorremmo request stateless, ma ahimè...

Tutti tutti no: nel senso che non ho nemmeno capito...

-Curious-LV
Comments have been closed on this topic.