View Full Version : 30 maximum execution time!!!!

05-04-2009, 05:01 PM
Good day to you all,
I have a problem of maximum execution time over an directory listing.

1. Is there a way to do this faster ?
2. Or is it a setting on my server ? isn't the default 30 seconds.
3. I'm working with a lot of files !
4. Is there a better way of doing this?

Error :
Fatal error: Maximum execution time of 30 seconds exceeded in Photos_gallery\update_menu.php on line 27

Code :


$directory = "Art/";
function dirList ($directory)

//create 2 arrays - one for folders and one for files
$folders = array();
$files = array();

// create a handler for the directory
$handler = opendir($directory);

// keep going until all files in directory have been read
while (false !== ($file = readdir($handler))) {

// if $file isn't this directory or its parent,
// add it to the results array
if ($file != '.' && $file != '..')

// If file is directory, mark it in bold.
if(is_dir($directory.$file)) {

if (time() - filemtime($directory.$file) < 604800) {
$folder_modified[] = "<span style=\"color:#DB1212;\"><li><div class=\"folder\"><img src=\"plus_icon.gif\" onclick=\"Toggle('".preg_replace('/\//','_',$directory."".$file)."'); return false;\" /><b>".$file."</b></div>";
} elseif (time() - filemtime($directory.$file) < 31556926) {
$folder_modified[] = "<span style=\"color:#003366;\"><li><div class=\"folder\"><img src=\"plus_icon.gif\" onclick=\"Toggle('".preg_replace('/\//','_',$directory."".$file)."'); return false;\" /><b>".$file."</b></div>";
} else {$folder_modified[] = "<span style=\"color:#000000;\"><li><div class=\"folder\"><img src=\"plus_icon.gif\" onclick=\"Toggle('".preg_replace('/\//','_',$directory."".$file)."'); return false;\" /><b>".$file."</b></div>";}

// Else not styled
$filenamecor = substr($file, 0, -4);
if (time() - filemtime($directory.$file) < 604800) {
$file_modified[] = '<span style="color:#DB1212;">'.$filenamecor.'<span>';
} elseif (time() - filemtime($directory.$file) < 31556926) {
$file_modified[] = '<span style="color:#003366;">'.$filenamecor.'<span>';
} else {$file_modified[] = '<span style="color:#000000;">'.$filenamecor.'<span>';}


echo "<ul id=\"".preg_replace('/\//','_',substr($directory,0,strlen($directory)-1))."\">\n"; //start a new unordered list for every iteration through dirList

$dircor = $directory;
// tidy up: close the handler
foreach($folders as $folder=>$file) {

echo "<li><div class=\"folder\">".$folder_modified[$folder]."</div>"; //echo the folder name enclosed in a list item
dirList($directory.$file.'/'); //loop through the contents of $folder
echo "</li>\n"; //close this list item after all files and folders in $folder have been looped through


foreach($files as $key=>$file) {

echo "<li><a href=\"index.html\" onclick=\"load('image_view.php?dir=".$dircor."&file=".$file."','boxdisp');return false;\">&nbsp;".$file_modified[$key]."</a></li>\n"; //echo the file name enclosed in a list item

echo "</ul>\n"; //close the unordered list

$filename = 'menu.html';
$somecontent = dirList($directory);

// Let's make sure the file exists and is writable first.
if (is_writable($filename)) {

// In our example we're opening $filename in append mode.
// The file pointer is at the bottom of the file hence
// that's where $somecontent will go when we fwrite() it.
if (!$handle = fopen($filename, 'a')) {
echo "Cannot open file ($filename)";

// Write $somecontent to our opened file.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Cannot write to file ($filename)";

echo "Success, wrote ($somecontent) to file ($filename)";


} else {
echo "The file $filename is not writable";

What I'm trying to do is list a directory recurcively and write the result in a html page.
So it faster to load for user

to get it content later from the photos gallery page the user will only see..

05-05-2009, 02:55 AM
You can set the maximum execution time with set_time_limit (http://docs.php.net/manual/en/function.set-time-limit.php). If your server host allows.

What are you trying to achieve exactly just give the user a list of the files and folders so they can click on them and view the images?

If it was me I would use a database to log that lot. Would be many times faster. But would mean when you upload the files to the server you would have to use an admin panel. I mean you don't really want your user to sit there while your script reads that lot could take many minutes.