martedì 22 marzo 2011

PHP - FastCGI timeout

Script PHP particolarmente 'pesanti' possono andare in timeout ed interrompersi. Se si sta usando FastCGI e IIS7 (disponibile con Windows 7) è possibile aumentare questo timeout lanciando un comando dos e modificando il php.ini.

Aprire una console dos ed eseguire il seguente comando:

%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='C:\php\php-cgi.exe'].activityTimeout:600


modificare il parametro fullPath in modo da assegnargli il percorso di installazione del motore php (C:\php\php-cgi.exe) e il parametro activityTimeout assegnadovi un valore numerico che esprime i secondi (600, per avere un timeout di 10 minuti).

Quindi è possibile verificare che il timeout sia stato impostato correttamente semplicemente eseguendo il seguente comando:


%windir%\system32\inetsrv\appcmd list config -section:system.webServer/fastCgi


il quale nell'xml visualizzato dovremmo vedere il timeout di 600 secondi:

<system.webserver>
<fastcgi>
<application activitytimeout="600" fullpath="C:\php\php-cgi.exe">
<environmentvariables>
</environmentvariables>
</application>
</fastcgi>
</system.webserver>


Infine dobbiamo modificare il php.ini per eviare l'expire della pagina php è quindi la visualizzazione di una pagina bianca, per fare questo è sufficiente modificare il parametro max_execution_time.


max_execution_time = 600 ; Maximum execution time of each script, in seconds



NB: durante l'installazione di Drupal ho dovuto fare quanto descritto per poter terminarne il setup.