Sono stato la settimana scorsa all’ottimo phpday 2009. Uno dei talk che mi ha colpito maggiormente è stato quello si Rasmus, l’inventore del PHP. Veramente ha tenuto due talk, uno sulla storia del php (Welcome) e l’altro, sconvolgente, sull’ottimizzazione (Simple is Hard). Rasmus era piuttosto infervorato sulla questione ottimizzazione, semplicità del codice e conseguente abbandono dei framework.
Ha spiegato alcune tecniche per la verifica dei colli di bottiglia dei siti, sia con benchmark sia con strumenti di diagnostica. Ho provato siege (si scarica e si lancia) e sto provando inclued che essendo un PECL si installa da riga di comando con:
# pecl install inclued
Ma con mia grande sorpresa non si è installato
running: phpize
sh: phpize: command not found
ERROR: `phpize' failed
Grrrrr. Alla ricerca del comando perduto:
# apt-get install php5-dev
Rilanciando il comando, pecl scarica il pacchetto, lo compila e lo installa. Cerca di modificare la configurazione di php.ini senza successo, quindi procedo con inserire la configurazione in /etc/php5/conf.d/inclued.ini
extension=inclued.so
inclued.enabled=1
inclued.dumpdir=/tmp
Fatto, ora inizia il divertimento… ma solo DOPO aver riavviato apache (altrimenti si perdono decine di minuti a chiedersi perchè nonostante gli sforzi /tmp rimane vuota!).
Ricaricando una qualsiasi pagina vengono creati file /tmp/include.XXXXX.1 e a questo punto si possono graficare:
$ php /usr/share/php/gengraph.php -i inclued.27843.1
Written inclued.out.dot...
$ dot -Tpng -o 1.png inclued.out.dot
Ho testato la home page di un’applicazione che sto scrivendo con Symfony 1.2, se volete vedere la devastazione dei risultati guardate l’immagine.

Albero di include/require di un progetto symfony