Loading

| HT articoli

| Performance
TAGS:

sapi, php-fpm, php, fastcgi

PHP-FPM: la rivoluzione di FastCGI

di Andrea Usuelli

PHP-FPM (FastCGI Process Manager) è un frontend FastCGI per PHP che migliora le funzionalità di php-cgi. E’ stato sviluppato da Andrei Nigmatulin nel 2004 come patch di PHP. Successivamente, circa a metà dell’anno scorso, Michael Shadle ha preso le redini del progetto rendendo PHP-FPM una serie di files indipendenti che non richiedono più il patching dei sorgenti di PHP. Ma la vera svolta la si è avuta il 4 Dicembre 2009, quando Antony Dovgal, uno sviluppatore di PHP, ha annunciato che PHP-FPM sarebbe entrato a far parte di un brach SVN ufficiale di PHP, e che quindi, quando saranno completate le fasi di testing, entrerà di fatto a far parte delle release ufficiali di PHP 5.3.x

Vediamo alcune delle caratteristiche di PHP-FPM:
  • Demonizzazione dei processi PHP (file PID, file log, setsid(), setuid(), setgid(), chroot().
  • Possibilità di riavviare i processi PHP senza causare alcuna interruzione delle richieste in fase di processamento, potrete quindi cambiare qualsiasi parametro nel file di configurazione o addirittura aggiornare PHP senza neanche 1 secondo di downtime!
  • Possibilità di non processare le richieste provenienti da un determinato IP.
  • Possibilità di avviare i CHILD sotto differenti UID/GID/CHROOT e con differenti impostaizoni di PHP (php.ini) il tutto senza bisogno di safe mode.
  • Possibilità di loggare tramite stdout e stderr.
  • In caso di corruzione della memoria RAM condivisa utilizzata da un OPCode Cache, PHP-FPM può effettuare un riavvio di emergenza di tutti i CHILD PHP.
  • Forza l’arresto dell’esecuzione di uno script nel caso in cui set_time_limit() avesse dei problemi.
E’ invece ancora in fase di sviluppo (ma già utilizzabile) una delle funzioni che rivoluzionerà l’uso di FastCGI, l’”adaptive process spawning”.
 
Fino ad oggi una delle grosse mancanze di FastCGI è stata l’impossibilità di avere un numero di CHILD (processi) PHP che cambi in modo dinamico a seconda delle richieste effettive, al momento bisogna lanciare PHP con un parametro fisso relativo ai CHILD che resteranno lo stesso numero sia con 1 richiesta al secondo che con 1000 richieste al secondo. Più avanti nell’articolo vedrete come PHP-FPM pone fine a questa terribile mancanza.
 
php-logo.png

Commenti Recenti

Powered by Disqus
Sunday 14 March 2010