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: , ,

Integrare Drupal con AppFabric Cache

Drupal sta emergendo nel mondo PHP come un CMS particolarmente adatto a scenari che richiedono scalabilità ed elevate performance.

Microsoft ha fatto recentemente un ottimo lavoro nel rendere PHP un cittadino di primo ordine nell'ecosistema IIS. Si veda a riguardo ad esempio WinCache e l'ottima integrazione in IIS Manager.

Un tassello finora mancante nell'ecosistema Drupal è una soluzione di caching distribuito su Windows / IIS, come già avviene su Linux con soluzioni quali ad es.: memcache/memcached.

AppFabric Cache risponde di per se a questa esigenza, con l'unico limite che si tratta di una tecnologia .Net only.

Per risolvere il problema ho riasciato oggi un modulo open source per Drupal, basato su un assembly che funge da wrapper COM sul client di AppFabric ed il modulo PHP vero e proprio che implementa le Cache API di Drupal.

L'approccio utilizzato si presta naturalmente anche per altri applicativi: Joomla, etc


Alessandro Pilotti
[ MVP ASP.Net / IIS ]   
  
P.S.: Cercasi tester e dev di buona volontà :-)

Technorati Tags: , ,