Laufzeitproblem einer PHP-Seite ...

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

  • #16
    Um keine Mißverständnisse aufkommen zu lassen:
    PHP-Code:
    <?
        $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);
        
        $sql = "SELECT * FROM kunden";
        $result = mysql_query($sql);
        echo 'Der Newsletter wird jetzt verschickt ...<br><br>';
        
        while ($row = mysql_fetch_array($result))   
        {
            # Hier steht natürlich mehr drin an Inhalten
            # als nur bla bla bla.
            
            $text = "bla bla bla";
            
            # Hier die Mails per SMTP-Befehlen übertragen.
            
            $fp = fsockopen("localhost", 25, $errno, $errstr, 20); $line = fgets($fp, 256);
            fputs($fp, "HELO localhost\r\n"); $line = fgets($fp, 256);
            $puts($fp, "MAIL FROM: [email]adresse@adresse.de[/email]\r\n"); $line = fgets($fp, 256);
            fputs($fp, "RCPT TO: ".$row['email']."\r\n"); $line = fgets($fp, 256);
            fputs($fp, "DATA\r\n"); $line = fgets($fp, 256);
            fputs($fp, "Subject: Beispielbetreff\r\n");
            fputs($fp, "Reply-To: [email]adresse@adresse.de[/email]\r\n\r\n");
            fputs($fp, $text."\r\n");
            fputs($fp, "\r\n.\r\n"); $line = fgets($fp, 256);
            fputs($fp, "QUIT"); $line = fgets($fp, 256);

            # -------------------------------------------------------
            fclose($fp);  # <<--- Dadadadadada meine ich
            # -------------------------------------------------------

            sleep(5); # Da kannst ja nachjustieren ...
        }
        echo 'Newsletter komplett verschickt.';
    ?>
    Zu Deinen bedenken, das Skript würde ewig brauchen:
    Du hast ja einen sleep von 5 Sekunden eingebaut. Oder? Du forcierst ja selbst eine Pause mit sleep(). Wie lange benötigt der Verbindungsaufbau? Wenns zu lange braucht, kannst ja über Deinen sleep() die Skript-Dauer regulieren.

    Es geht ja in erster Linie darum dahinter zu kommen, woran es liegt, dass es daqs Skript aufhaut oder? Würde nämlich ein PHP-Timeout zuschlagen, so gäbe es eine entsprechende Fehlermeldung aber nie und nimmer einen 404er Error.

    Zu Deinen Bedenken GMX könnte nicht 50 eMails unmittelbar hintereinander verarbeiten: GMX lebt davon mails zu verarbeiten ist ja das Kerngeschäft und sollte schon in der Lage sein ein solches Aufkommen korrekt abzuhandeln.

    Bitte nachfolgendes als OffTopic zu betrachten [jononanet *)]:

    Und jetzt, wo ich das schreibe fällt mir ein, dass ich, weil auch ich leidtragendes Spam Opfer bin, eigentlich bei Massenmailgenerierungsproblemen nicht Unterstützung liefern wollte. Wär doch pervers, dass ich u.U. zugespammt werde, weil ich jemandem dabei vielleicht noch geholfen habe

    Falls Du Massenmails an Menschen verschickst, die sich nicht ausdrücklich einverstanden erklärt haben damit dass sie das wünschen, könnte es passieren dass Dir irgendjemand aus der Masse den A.... aufreißt.

    * = kärntnerisch

    Kommentar


    • #17
      und trotzdem brauch er nicht ständig eine neue Verbindung zum SMTP aufbauen

      PHP-Code:
      $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);
          
          
      $sql "SELECT * FROM kunden";
          
      $result mysql_query($sql);
          echo 
      'Der Newsletter wird jetzt verschickt ...<br><br>';

          
      // einmal verbinden reicht ! du kannst dann mehrere Mails darüber absetzen
          
      $fp fsockopen("localhost"25$errno$errstr20); $line fgets($fp256);
          
      fputs($fp"HELO localhost\r\n"); $line fgets($fp256);

          
      // jetzt alle Mails in Schleife hintereinander absetzen
          
      while ($row mysql_fetch_array($result))   
          {
              
      # Hier steht natürlich mehr drin an Inhalten
              # als nur bla bla bla.
              
              
      $text "bla bla bla";
              
              
      # Hier die Mails per SMTP-Befehlen übertragen.
              
              
      $puts($fp"MAIL FROM: [email]adresse@adresse.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: Beispielbetreff\r\n");
              
      fputs($fp"Reply-To: [email]adresse@adresse.de[/email]\r\n\r\n");
              
      fputs($fp$text."\r\n");
              
      fputs($fp"\r\n.\r\n"); $line fgets($fp256);
             
              
      // weg damit !
              // sleep(5); # Da kannst ja nachjustieren ...
          
      }
          
      // und nu die Verbindung schließen !
          
      fputs($fp"QUIT"); $line fgets($fp256);
          
      fclose($fp);  

          echo 
      'Newsletter komplett verschickt.';
      ?> 
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #18
        @TBT: Nochmals danke.

        @hand: Keine Sorge, ich bin nicht der Urheber dieses Newsletters. Ich bin nur der Versender. Wer sich über Spam beschweren möchte, der wende sich bitte an meinen Brötchengeber.
        PS: Die Adressenliste ist nicht geklaut.

        Kommentar


        • #19
          Original geschrieben von Innuendo
          PS: Die Adressenliste ist nicht geklaut.
          OffTopic:
          sondern selber auf dubiose weise gesammelt....

          ich persönlich finde spam ebenso lästig wie abartig und völlig überflüssig.
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #20
            Soll ich es nochmal schreiben? Ich bin nur der Versender des Newsletters. Ich frage mich, wo ich geschrieben habe, dass die List geklaut ist. Die Leute haben das Teil abonniert und ich schicke es ihnen zu. Mann mann Mann.

            Kommentar


            • #21
              OffTopic:
              falls es für dich falsch rüber gekommen sein sollte, so tut es mir leid. tatsache ist jedenfalls, das ich dich in keinster weise angegriffen habe. bitte beachte des smiley hinter meinem ersten satz.

              und jetzt komm wieder runter.
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #22
                Mal was anderes: Ist es eigentlich ratsam, bei einem Newsletterskript überhaupt sleep() zu verwenden?

                Kommentar


                • #23
                  Nein, ist nicht ratsam.

                  Deshalb versuchen wir ja Deinem Problem auf die Schliche zu kommen. Und wie sieht es aus, hast Du erste Ergebnisse?

                  wie läufts mit Versuch 1, wie mit Versuch 2?
                  Zuletzt geändert von hand; 10.06.2003, 18:45.

                  Kommentar


                  • #24
                    Das Skript scheint schneller zu verschicken. Allerdings vermute ich mittlerweile, dass es an der Session liegt, die das Newslettersystem benutzt. Da gibt es doch soetwas wie ein Session-Timeout, oder?

                    Kommentar

                    Lädt...
                    X