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.