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.

EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum