[PHP] Problem - Schleife bricht ab

Dieses Thema im Forum "Webentwicklung" wurde erstellt von SeXy, 24. April 2007 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 24. April 2007
    Problem - Schleife bricht ab

    Moin!
    Hab mir vor Kurzem ein eigenes CMS mit Gallery gebastelt und möchte jetzt eben, damit ich nicht alle 8000 Bilder aus der alten Gallerie wieder per Hand übertragen muss, Albumweise übertragen. Dazu habe ich mir ein kleines Script geschrieben.
    Hier mein Code:
    PHP:
    <? php
        $filedir 
    '../gallery2/data/albums/Partys/Scheune-06-3/' ;
        
    $dir  opendir ( $filedir );
        
    $dest  'images/gallerie/pics/25/31/' ;
        
    $dest1  'images/gallerie/thumbs/25/31/' ;
        while(
    $var  readdir ( $dir )) {
            if (
    $var  !=  "."  &&  $var  !=  ".." ) {
                
    $copy  $filedir . $var ;
                
    $newvar  explode ( '.' $var );
                
    $zeichen  = array( date  ( 'd' ),  date  ( 'm' ),  date  ( 'Y' ),  date  ( 'H' ),  date  ( 'i' ),  date  ( 's' ));
                
    $indizes  array_rand ( $zeichen , 3 );
                
    $name  $zeichen [ $indizes [ 0 ]]. $zeichen [ $indizes [ 1 ]]. $zeichen [ $indizes [ 2 ]]. '.' . $newvar [ '1' ];
                
    $newfile  $dest . $name
                
    $newfile1  $dest1 . $name ;
                echo 
    $name . '<br>' ;
                
    copy ( $copy $newfile );

                
    $size  getimagesize ( " $copy " );
                
    $width  $size [ 0 ];
                
    $height  $size [ 1 ];

                
    $width_tn  TN_WIDTH ;
                
    $height_tn  intval ( $height  $width_tn  $width );
                if(
    $height_tn  TN_HEIGHT ) {
                    
    $height_tn  TN_HEIGHT ;
                }

                if(
    $size [ 2 ]== 1 ) { 
                    
    // GIF 
                    
    $picture  ImageCreateFromGIF ( " $copy " ); 
                    
    $picture_tn  ImageCreateTrueColor ( $width_tn , $height_tn ); 
                    
    ImageCopyResampled ( $picture_tn , $picture , 0 , 0 , 0 , 0 , $width_tn , $height_tn , $width , $height ); 
                    
    ImageGIF ( $picture_tn , " $newfile1 " , 95 ); 
                } 

                if(
    $size [ 2 ]== 2 ) { 
                    
    // JPG 
                    
    $picture  ImageCreateFromJPEG ( " $copy " ); 
                    
    $picture_tn  ImageCreateTrueColor ( $width_tn , $height_tn ); 
                    
    ImageCopyResampled ( $picture_tn , $picture , 0 , 0 , 0 , 0 , $width_tn , $height_tn , $width , $height ); 
                    
    ImageJPEG ( $picture_tn , " $newfile1 " , 95 ); 
                } 

                if(
    $size [ 2 ]== 3 ) { 
                    
    // PNG 
                    
    $picture  ImageCreateFromPNG ( " $copy " ); 
                    
    $picture_tn  ImageCreateTrueColor ( $width_tn , $height_tn ); 
                    
    ImageCopyResized ( $picture_tn , $picture , 0 , 0 , 0 , 0 , $width_tn , $height_tn , $width , $height ); 
                    
    ImagePNG ( $picture_tn , " $newfile1 " , 95 ); 
                }

                
    $sql  'INSERT INTO gallerie_pictures
                                (name,
                                 time,
                                 uploader,
                                 cat,
                                 subcat)
                            VALUES
                                ("'
    . $name . '",
                                 "'
    . time (). '",
                                 "1",
                                 "25",
                                 "31")'
    ;
                
    mysql_query ( $sql ) OR die( mysql_error ());
            }
        }
    ?>
    Funktioniert einwandfrei, ist total klasse. Leider aber nur mit dem ersten Bild, obwohl mehrere im ordner sind.
     
  2. 25. April 2007
    AW: Problem - Schleife bricht ab

    variante für faule: an verschiedenen stellen echo's oder vardump's einbauen, um zu sehen, was gerade in den variablen drin steht und wo genau die schleife abbricht.

    variante für gute: quelltext anschauen. aber erstmal kaffee.

    //edit
    ok, läuft noch durch. deswegen schaut man mal eben auf PHP: readdir - Manual und findet folgendes:
    PHP:
    <? php
    // Beachten Sie, dass !== vor 4.0.0-RC2 nicht verfuegbar war

    if ( $handle  opendir ( '/path/to/files' )) {
        echo 
    "Directory handle:  $handle \n" ;
        echo 
    "Files:\n" ;

        

        
    while ( false  !== ( $file  readdir ( $handle ))) {
            echo 
    " $file \n" ;
        }

        

        
    while ( $file  readdir ( $handle )) {
            echo 
    " $file \n" ;
        }

        
    closedir ( $handle );
    }
    ?> 
     
  3. 25. April 2007
    AW: Problem - Schleife bricht ab

    Okey, jetzt bekomme ich folgendes ausgegeben:
    Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 9216 bytes) in /srv/www/vhosts/****/httpdocs/party/files/test.php on line 38

    Also kann ich da nichts machen, außer den Serveradmin anzutexten?
     
  4. 25. April 2007
    AW: Problem - Schleife bricht ab

    richtig, bzw net so viel in den speicher reinmüllen^^
    aber eigentlich wunderts mich, denn so viel machst du eig net, dass es 32mb verbauchen würde. außer du hast so viele bilder drinne, dass es den speicher auffrisst.
     
  5. 25. April 2007
    AW: Problem - Schleife bricht ab

    Hmm, ich hab irgendwann mal gesehen, dass man den Speicher mit nem Befehl weider freigeben kann. Ich mein, es wird ja nur ein Bild zur Zeit abgearbeitet. Wenn das fertig ist, könnt man den Speicher doch wieder freigeben oder nicht?
    Also irgendwo muss da ja ein Problem sein, dass der Speicher voll ist.
     
  6. 25. April 2007
    AW: Problem - Schleife bricht ab

    versuch mal nach dem eintragen die gesetzten variablen zu löschen mit unset($variable);
     
  7. 25. April 2007
    AW: Problem - Schleife bricht ab

    nice, das funktioniert wunderbar. Vielen Dank an euch alle, habt mir alle sehr geholfen!
    BW's sind draußen
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.