Ungewöhnlich lange Laufzeit ...

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

  • Ungewöhnlich lange Laufzeit ...

    Hallo an alle. Mit dem folgendem Skriptteil lese ich aus einer Datenbank Kundendaten aus, um ihnen eine eMail zu schicken (bitte nicht wieder irgendwelche Bemerkung bezüglich möglicher SPAM-Geschichten).

    PHP-Code:
    ###################################
    # Anzahl der DB-Einträge auslesen #
    ###################################
                    
    $db mysql_connect($cfg['mysql_host'],$cfg['mysql_user'],$cfg['mysql_pass']);
    if (!
    $db) die ("Kann Server nicht erreichen");
    mysql_select_db($cfg['mysql_db'],$db);
                        
    $result mysql_query("SELECT id, vorname, name, email FROM kunden");
    echo 
    'Der Newsletter wird jetzt verschickt ...<br><br>';
            
    #############################
    # Zum SMTP-Server verbinden #
    #############################
            
    $fp fsockopen("localhost"25$errno$errstr20); $line fgets($fp256);
    fputs($fp"HELO localhost\r\n"); $line fgets($fp256);
            
    while (
    $row mysql_fetch_array($result))   
    {        

    ... 
    hier den Mailtext zusammenstellen ...            

    fputs($fp"MAIL FROM: [email]test@test.de[/email]\r\n"); $line fgets($fp256);
    fputs($fp"RCPT TO: ".$row['email']."\r\n"); $line fgets($fp256);
    fputs($fp"DATA\r\n"); $line fgets($fp256);
    fputs($fp"Subject: Betreff\r\n");
    fputs($fp"Reply-To: [email]test@test.de[/email]\r\n\r\n");
    fputs($fp$mail_text."\r\n");
    fputs($fp"\r\n.\r\n"); $line fgets($fp256);
    }
                
    fputs($fp"QUIT"); $line fgets($fp256);
    fclose($fp);
    mysql_close();

    echo 
    '<font class="ntext" color="#339966"><br><b>eMail erfolgreich versendet.</b><br></font>'
    Das Verschicken klappt wunderbar. Allerdings scheint das Skript irgendwie, nachdem es in der Zeile

    PHP-Code:
    fputs($fp"QUIT"); $line fgets($fp256); 
    angekommen ist, noch weiterzulaufen. Sprich, es dauert noch bis zu ca. 45 Sekunden, bis die Zeile

    PHP-Code:
    echo '<font class="ntext" color="#339966"><br><b>eMail erfolgreich versendet.</b><br></font>'
    angezeigt wird. Jemand eine Idee, woran das liegen könnte? Ich habe es mit EINER eMail-Adresse probiert und selbst da braucht er 45 Sekunden, bis er die echo-Zeile anzeigt.

    Danke im Voraus.

    Innuendo

  • #2
    Re: Ungewöhnlich lange Laufzeit ...

    Original geschrieben von Innuendo
    Allerdings scheint das Skript irgendwie, nachdem es in der Zeile
    PHP-Code:
    fputs($fp"QUIT"); $line fgets($fp256); 
    angekommen ist, noch weiterzulaufen. Sprich, es dauert noch bis zu ca. 45 Sekunden, bis die Zeile
    PHP-Code:
    echo '<font class="ntext" color="#339966"><br><b>eMail erfolgreich versendet.</b><br></font>'
    angezeigt wird.
    dann würde ich mal nach jedem fputs() ein echo einbauen, dass ausgibt an welcher stelle sich das script gerade befindet, und mit flush() sofort an den browser senden.

    so kannst du evtl. ermitteln, ob eines der kommandos besonders lange braucht ...
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      flush() funktioniert unter Windows nicht. Jedenfalls habe ich das hier gelesen. Aber ich werde die Idee mit dem echo mal testen. Danke Dir.

      Kommentar


      • #4
        Habe die echos eingebaut. Die werden allerdings wirklich erst ausgegeben, wenn er das Skript beendet hat, d.h. erst, wenn er mit echo 'eMail verschickt ..."; den Satz hinschreibt, kann ich auch die anderen echos lesen.

        Kommentar


        • #5
          PHP-Code:
          echo __LINE__.' Zeit: '.time().'<br />'
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Das Ergebnis:

            142 Zeit: 1056542971
            144 Zeit: 1056542971
            146 Zeit: 1056542971
            151 Zeit: 1056542971

            Das schreibt er mir erst nach etwa 45 Sekunden.

            Kommentar


            • #7
              mach das mal so alle 10 zeilen

              auf jeden fall vor dem fsockopen und nach dem fclose
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Das diesmalige Ergebnis:

                122 Zeit: 1056543694
                124 Zeit: 1056543694
                126 Zeit: 1056543695
                144 Zeit: 1056543695
                146 Zeit: 1056543695
                148 Zeit: 1056543695
                153 Zeit: 1056543696
                161 Zeit: 1056543756

                In Zeile 122 befindet er sich VOR dem fsockopen, in Zeile 124 danach.
                In Zeile 126 befindet er sich NACH dem HELO.
                In Zeile 144 befindet er sich NACH dem MAIL FROM.
                In Zeile 146 befindet er sich NACH dem RCPT TO.
                In Zeile 148 befindet er sich NACH dem DATA.
                In Zeile 153 befindet er sich NACH dem Punkt.
                In Zeile 161 befindet er sich NACH dem QUIT.

                Kommentar


                • #9
                  Laut den Zeitangaben benötigt er zwischen dem Punkt und dem Quit etwa 1 Minute. Ist doch nicht normal, oder? Kann es daran liegen, dass ich, um den Mailtext zusammenzustellen, diesen aus einer Datei in eine Variable einlese und dann in die Mail einsetze?

                  Kommentar


                  • #10
                    Ich habe in der Zeile

                    PHP-Code:
                    fputs($fp"QUIT"); 
                    einfach das "$line = fgets($fp, 256);" herausgenommen. Jetzt braucht er nicht eine Minute zwischen dem Punkt und dem QUIT. Ich hoffe, das war so richtig.

                    Kommentar

                    Lädt...
                    X