There’s no straight-forward way to handle execution timeout in PHP 5.x — it’s not like you can try/except or something. The execution time-limit is exceeded, the program terminates. Which, thinking from the perspective of the person who maintains the server, is a Good Thing … bugger up the ‘except’ component and now that becomes an infinite loop.
But I’m looking to throw a “pretty” error to the end user and have them try again with a data set that will take less time to process. Turns out, you can use a shutdown function to display something other than the generic PHP time limit exceeded page.
<?php
function runOnShutdown(){
$arrayError = error_get_last();
if( substr($arrayError['message'], 0, strlen("Maximum execution time of")) === "Maximum execution time of" ){
echo "<P>Maximum execution time";
}
elseif($arrayError){
print_r($arrayError);
}
}
function noOp($iInteger){
for($z = 0; $z < $iInteger; $z++){
$a = $iInteger * $iInteger;
}
return $iInteger;
}
register_shutdown_function('runOnShutdown');
ini_set('display_errors', '0');
ini_set('max_execution_time', 2);
// for($i = 0; $i < 10; $i++){
for($i = 0; $i < 10000; $i++){
$j = noOp($i);
print "<P>$j</P>\n";
}
print "<P>Done</P>\n";
?>
And the web output includes a customized message because the max execution time has been exceeded.

















