Abbruch ohne Meldung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abbruch ohne Meldung

    Dieses Script soll aus einer Tabelle sich die Ordner raussuchen und darin zu allen Bildern ein Thumbnail erstellen. Es funktioniert auch, allerdings bricht es nach kurzer Zeit ohne Fehlermeldung ab. Bei 300 - 400kB Bildern nach etwa 6 Bildern, bei Bildgrößen von ca. 100kB nach etwa 15 Bildern.
    Auch ein error_reporting(E_ALL) brachte keinen Hinweis.
    PHP-Code:
    function resizeImage($imgname$pfad){
        
    $quality 85;
        
    $maxb 200;
        
    $maxh 200;
        
    $bildpfad $pfad.'/'.$imgname;
        
    $bild imagecreatefromjpeg($bildpfad);
        
    $alt_breite imagesx($bild);
        
    $alt_hoehe imagesy($bild);
        if (
    $alt_breite <= $alt_hoehe){
            
    $neu_hoehe $maxh;
            
    $neu_breite round(($neu_hoehe $alt_hoehe) * $alt_breite);
            if (
    $neu_breite $maxb){
                
    $faktor $neu_breite $maxb;
                
    $neu_breite $maxb;
                
    $neu_hoehe $neu_hoehe $faktor;
            }
        }else{
            
    $neu_breite $maxb;
            
    $neu_hoehe round(($neu_breite $alt_breite) * $alt_hoehe);
            if (
    $neu_hoehe $maxh){
                
    $faktor $neu_hoehe $maxh;
                
    $neu_hoehe $maxh;
                
    $neu_breite $neu_breite $faktor;
            }
        }
        
    $breite_of $neu_breite 14;
        
    $hoehe_of $neu_hoehe 14;
        
    $file_name_dest "$pfad/thumbs/$imgname";
        
    $thumb imagecreatetruecolor($neu_breite$neu_hoehe);
        
    $farbe_body=imagecolorallocate($thumb,255,255,255);
        
    imagefill($thumb,0,0,$farbe_body);
        
    imageantialias($thumbTRUE);
        
    imagecopyresampled($thumb$bild7700$breite_of$hoehe_of$alt_breite$alt_hoehe);
        
    imagejpeg($thumb,$file_name_dest$quality); 
        
    imagedestroy($thumb);
        return 
    TRUE
    }

    ...

    while(
    $zeile=mysql_fetch_array($erg)){
        
    $ordner $zeile[ordner];
        
    $pfad "files/".$ordner;
        
    mkdir("files/$ordner/thumbs"0777);
        if (
    $handle = @opendir($pfad)){
            while (
    $file readdir($handle)){
                if (
    is_file($pfad.'/'.$file)){
                    
    $ret resizeImage($file$pfad);
                    if (!
    $ret)
                        exit (
    'Das Vorschaubild konnte nicht erstellt werden!');
                }
            }
            
    closedir($handle);
        }

    Hat jemand eine Idee, woran es liegt bzw. was geändert werden muß? Danke schonmal im Voraus.
    Manche Worte wissen selbst nicht, was sie
    bedeuten.

  • #2
    Setz doch mal ganz unten ne Testausgabe hin. Vielleicht läuft das Script ja auch einfach durch - dann hast du irgendwo einen Logikfehler gemacht.
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Es gibt fast nichts, was ich nicht schon ausgeben ließ. Es war aber nichts dabei, was mir irgendwie verdächtig erschienen wäre. Ich hab die Ausgaben hier zur besseren Übersicht nur rausgenommen.

      Das einzige was ich dabei rausfinden konnte war, daß nicht immer an der selben Stelle abgebrochen wird. Mal ist nach dem imageantialias Schluß, mal wird noch ein Dateiname geholt, aber dann die Funktion nicht mehr aufgerufen.
      Manche Worte wissen selbst nicht, was sie
      bedeuten.

      Kommentar


      • #4
        Da die Seite, für die das Script ist, schon existiert und bisher die Vorschaubilder immer online erzeugt wurden, habe ich das Ganze jetzt mal abgewandelt. Bisher ist die Routine, die hier in eine Funktion verpackt wurde, als separate Datei aufgerufen worden. Ich habe das nun insoweit abgewandelt, als daß die Funktion nicht mehr aufgerufen wird sondern statt dessen diese externe Datei in ein <img> verpackt die Bilder erzeugt und es nicht an den Browser zurückgibt sondern in das separate Verzeichnis schreibt. Und so funktioniert es!!!

        Damit hat sich das Problem an sich zwar gelöst, aber es wäre trotzdem interessant zu wissen, warum es als Funktion nicht klappt.
        Manche Worte wissen selbst nicht, was sie
        bedeuten.

        Kommentar


        • #5
          Original geschrieben von sprint
          aber es wäre trotzdem interessant zu wissen, warum es als Funktion nicht klappt.
          max_execution_time mal geprüft?
          Kissolino.com

          Kommentar


          • #6
            Original geschrieben von Wurzel
            max_execution_time mal geprüft?
            Ja, hatte ich auch schon dran gedacht. Liegt aber wie üblich bei 30 Sekunden. Der Abbruch kommt aber sehr viel früher, nach ca. 10 - 15 Sec.
            Manche Worte wissen selbst nicht, was sie
            bedeuten.

            Kommentar


            • #7
              Siehst du durch error_reporting(E_ALL) denn überhaupt irgendwelche fehler?

              Teste einfach mal und schreib nen echo $abcdef; in den Code.

              Ich habe bei mehreren Windows Apache versionen gemerkt das die display_errors direktive auf false steht und somit gar keine fehler angezeigt werden (trotz E_ALL)
              gruss Chris

              [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

              Kommentar


              • #8
                Original geschrieben von hhcm
                Siehst du durch error_reporting(E_ALL) denn überhaupt irgendwelche fehler?

                Teste einfach mal und schreib nen echo $abcdef; in den Code.

                Ich habe bei mehreren Windows Apache versionen gemerkt das die display_errors direktive auf false steht und somit gar keine fehler angezeigt werden (trotz E_ALL)
                Es werden schon Fehler ausgegeben, sind aber alles nur "Notice: Use of undefined constant ...", kein einziger Error oder Warning.
                Das kann es aber auch nicht sein, da ja wie gesagt die identische Routine, in eine externe Datei verpackt, einwandfrei durchläuft. Es müßte also eher an der Verwendung als Function liegen.
                Manche Worte wissen selbst nicht, was sie
                bedeuten.

                Kommentar


                • #9
                  Was ist damit?
                  if ($handle = @opendir($pfad))
                  Download ET-Chat v3.x.x

                  Kommentar


                  • #10
                    Original geschrieben von E.T.
                    Was ist damit?
                    if ($handle = @opendir($pfad))
                    Ist zum auslesen eines Verzeichnisses per PHP. Hat aber auch nichts mit dem Problem zu tun, da dieser Teil immer unverändert bleibt und auch die funktionierende Lösung mit der externen Routine so arbeitet.
                    Manche Worte wissen selbst nicht, was sie
                    bedeuten.

                    Kommentar


                    • #11
                      Er meint sicher das böse --> @ <-- Unsauberes Programmieren nennt sich sowas
                      gruss Chris

                      [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                      Kommentar


                      • #12
                        Original geschrieben von hhcm
                        Er meint sicher das böse --> @ <-- Unsauberes Programmieren nennt sich sowas
                        Hab das so aus einem fertigen Script übernommen und nie Gedanken drüber gemacht.
                        Manche Worte wissen selbst nicht, was sie
                        bedeuten.

                        Kommentar


                        • #13
                          Schmeiss es mal raus.

                          Fehlerunterdrückung ist bei suche nach Fehlern irgendwie
                          gruss Chris

                          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                          Kommentar


                          • #14
                            Original geschrieben von hhcm
                            Schmeiss es mal raus.
                            Hab es probiert, hat aber wie vermutet keine neuen Erkenntnisse gebracht. Kann ja auch nicht sein, da diese Stelle ja beim Abbruch schon weit zurück liegt. (Ich prüfe ja auch nicht die Haustür, wenn die Klotür im 10. Stock klemmt. ) Und um es noch mal zu wiederholen, dieses Script in zwei Teile zerlegt, funktioniert einwandfrei! Es muß also mMn an der Funktion liegen.
                            Manche Worte wissen selbst nicht, was sie
                            bedeuten.

                            Kommentar

                            Lädt...
                            X