Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    problema con funzione ricorsiva

    ho creato una funzioncina che scansiona un percorso alla ricerca di immagini, e se le trova crea le relative thumbnails in una sottocartella creata apposta..

    Codice PHP:
    function resizeImages($path,$altImg,$altThumb,$quality){
        
    $handle opendir($path);
        while (
    false !== ($file readdir($handle))) {    
                if(
    is_dir($path.$file)&&($file!='.')&&($file!='..')&&($file!='thumb')){
                
    resizeImages($path.$file,$altImg,$altThumb,$quality);
                echo 
    $path.$file." ";}
            if(
    is_file($path.$file)){
                if(!
    is_dir($path.'\\thumb'))
                    
    mkdir($path.'\\thumb');
                
    createSingleThumb($file,$path,$path.'\\thumb\\',$altThumb,$quality);
            }
        }
        
    closedir($handle);

    il problema è che non fa ricorsione..se metto il percorso dove ci sono le immagini va tutto ok..se però metto un livello superiore mi entra nell'if
    if(is_dir($path.$file)&&($file!='.')&&($file!='..' )&&($file!='thumb')){
    resizeImages($path.$file,$altImg,$altThumb,$qualit y);
    echo $path.$file." ";}

    perchè vedo la stampa a video del percoso, ma sembra non entrare nella funzione ricorsiva..

    dove sbaglio?

    grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    due accorgimenti:

    1) per una prima verifica - se davvero vedi l'output che dici - stampa anche il parametro $path prima dell'assegnamento di $handle, per vederne il valore all'ingresso della funzione
    2) tieni conto che una ricorsione di questo tipo potrebbe creare problemi perchè lasci aperti gli handle sul filesystem durante le chiamate e c'è un limite per questo (se ci fossero troppe cartelle annidate potresti superarlo)

  3. #3
    alla fine ho risolto modificando un vecchio script che avevo in giro..e funziona..

    Codice PHP:
    function resizeImage($folder,$altImg,$altThumb,$quality){
      
    $folder rtrim($folder"/") . '/';
      if (
    $hd opendir($folder)) {
        while (
    false !== ($file readdir($hd))) { 
          if(
    $file != '.' && $file != '..' && $file != 'thumb') {
            if(
    is_dir($folder $file)) {
              
    resizeImage($folder.$file,$altImg,$altThumb,$quality);
            } else{
              if(!
    is_dir($folder.'/thumb'))
                    
    mkdir($folder.'/thumb');
                
    createSingleThumb($file,$folder,$folder.'/thumb/',$altThumb,$quality);
                
    createSingleThumb($file,$folder,$folder,$altImg,$quality);
            }
            }
          }
        }
        
    closedir($hd); 
      } 

    riguardo al punto 2:mettendo closedir($hd);
    non risolvo il problema?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.