Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    Regular Coder
    Join Date
    Feb 2006
    Posts
    262
    Thanks
    23
    Thanked 1 Time in 1 Post

    Post 30 maximum execution time!!!!

    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 :
    PHP Code:




    <?php
     
    $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)) {
            
    array_push($folders,$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
            
    }else{
            
    array_push($files,$file);
         
    $filenamecor substr($file0, -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
        
    closedir($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)";
             exit;
        }

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

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

        
    fclose($handle);

    } 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..

  • #2
    Senior Coder timgolding's Avatar
    Join Date
    Aug 2006
    Location
    Southampton
    Posts
    1,519
    Thanks
    114
    Thanked 110 Times in 109 Posts
    You can set the maximum execution time with set_time_limit. 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.
    You can not say you know how to do something, until you can teach it to someone else.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •