Newsletter versand performance bei vielen (35000) Empfängern

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • melzebub
    Contao-Fan
    • 21.05.2010
    • 292

    #1

    Newsletter versand performance bei vielen (35000) Empfängern

    Hi,

    ich habe das Problem, dass beim Newsletter versand der Aufruf der einzelnen Zyklen bereits ewig dauert (pro zyklus 10 adressen dauer ca. 45 minuten). Ich probiere mit der 1.5 rc1 Version. Das Problem liegt glaube ich daran, dass ich viele recipient in der outbox habe und er jedes mal folgende DB Abfrage durchläuft.

    PHP-Code:
    // Get recipients
                    $objRecipients = $this->Database->prepare("
                        SELECT
                            t.*,
                            t.outbox_email as email
                        FROM (
                            SELECT
                                $strSelect
                                o.email as outbox_email,
                                o.id as outbox,
                                o.source as outbox_source,
                                SUBSTRING(o.email, LOCATE('@', o.email)) as domain
                            FROM
                                tl_avisota_newsletter_outbox o
                            LEFT JOIN
                                tl_member m
                            ON
                                    o.email=m.email
                                AND m.disable=''
                            LEFT JOIN
                                tl_avisota_recipient r
                            ON
                                    o.email=r.email
                                AND r.pid = SUBSTRING(o.source, 6)
                            WHERE
                                    o.pid=?
                                AND o.token=?
                                AND o.send=0) t
                        GROUP BY
                            domain")
                        ->limit($intCount)
                        ->execute($intId, $strToken); 
    
    oder irre ich mich da?
    Frage ist also, was soll ich tun? Verzichten kann ich auf die verknüpfung mit der tl_members Tabelle da diese leer ist und ich keinen personalisierten Versand brauche.
    Ich hoffe ihr versteht was ich meine und es gibt da eine Lösung…

    Danke im Voraus.
    Zuletzt geändert von schman; 16.08.2011, 10:30.
    Contao Webentwickler / Webdesigner aus Lüneburg - slash-works.de
    kein Support per PN. Fragen gehören ins Forum.
  • andreasisaak
    Contao-Urgestein
    • 07.07.2009
    • 4107

    #2
    Ich kann dir zwar nicht helfen weil ich Avisota noch nie verwendet habe, aber könntest du Codeschnippsel bitte als solchen markieren? Dann können andere das besser lesen wenn sie dir helfen wollen!

    lg

    Kommentar

    • melzebub
      Contao-Fan
      • 21.05.2010
      • 292

      #3
      sorry, erledigt.
      Contao Webentwickler / Webdesigner aus Lüneburg - slash-works.de
      kein Support per PN. Fragen gehören ins Forum.

      Kommentar

      • tril
        Contao-Urgestein
        • 07.01.2010
        • 2939

        #4
        Jup kann ich nachvollziehen, aber der Join ist da imo das kleinere Problem. Vermutlich ist das bestimmen der Domain und der GROUP BY viel ausschlaggebender.

        Kommentar

        • melzebub
          Contao-Fan
          • 21.05.2010
          • 292

          #5
          damnit, also habe ich keine chance. kann man notfalls auf die zyklus gesteuerten domainsortierungen verzichten? ist nicht unbedingt zu empfehlen, aber so komme ich auch nicht gut voran :/.
          vielleicht wäre eine Lösung die Domain bereits beim anlegen des empfängers zu extrahieren. dann spart man sich das beim versand.
          Zuletzt geändert von melzebub; 01.08.2011, 14:26.
          Contao Webentwickler / Webdesigner aus Lüneburg - slash-works.de
          kein Support per PN. Fragen gehören ins Forum.

          Kommentar

          • melzebub
            Contao-Fan
            • 21.05.2010
            • 292

            #6
            Habe gerade mal zum testen die domain generierung und gruppierung rausgenommen. Dauert aber leider immer noch unerträglich lange. Es ist eher die verbindung mit der recipient tabelle. Hat jemand ne gute Idee für mich?
            Hinzu kommt ja noch, dass dann dadurch die Website selbst unbrauchbar wird, da die DB die Prozesse nur noch langsam verarbeiten kann.
            Contao Webentwickler / Webdesigner aus Lüneburg - slash-works.de
            kein Support per PN. Fragen gehören ins Forum.

            Kommentar

            • melzebub
              Contao-Fan
              • 21.05.2010
              • 292

              #7
              okay okay, letzter rat. ich habe die abfrage etzt wie folgt gekürzt:
              Code:
              // Get recipients
              				$objRecipients = $this->Database->prepare("
              					SELECT
              						t.*,
              						t.outbox_email as email
              					FROM (
              						SELECT
              							o.email as outbox_email,
              							o.id as outbox,
              							o.source as outbox_source
              						FROM
              							tl_avisota_newsletter_outbox o
              						
              						WHERE
              								o.pid=?
              							AND o.token=?
              							AND o.send=0) t
              						")
              					->limit($intCount)
              					->execute($intId, $strToken);
              damit gehts sehr viel schneller. spricht aus technischer sicht etwas dagegen? verhindere ich so etwaige funktionen?

              danke und gruß
              Contao Webentwickler / Webdesigner aus Lüneburg - slash-works.de
              kein Support per PN. Fragen gehören ins Forum.

              Kommentar

              • tril
                Contao-Urgestein
                • 07.01.2010
                • 2939

                #8
                Zitat von melzebub Beitrag anzeigen
                damit gehts sehr viel schneller. spricht aus technischer sicht etwas dagegen? verhindere ich so etwaige funktionen?
                Das senden pro Domain und die personalisieren gehen dabei verloren.

                Kommentar

                • melzebub
                  Contao-Fan
                  • 21.05.2010
                  • 292

                  #9
                  okay, die domain extrahierung/sortierung habe ich wieder hinzugefügt, es geht sehr viel schneller, zyklus auf 10 mails 3 sekunden pause zwischen jedem zyklus und ich habe in 10 stunden 32.000 mails raus. noch in keiner blacklist. Hoffe das bleibt so.
                  Gut, vielen Dank an alle. Ich freue mich aufs nächste update. Auf jeden Fall ist nun klar, dass ich bei Avisota bleibe. Sehr schönes Tool. Danke dafür
                  Contao Webentwickler / Webdesigner aus Lüneburg - slash-works.de
                  kein Support per PN. Fragen gehören ins Forum.

                  Kommentar

                  • tril
                    Contao-Urgestein
                    • 07.01.2010
                    • 2939

                    #10

                    Kommentar

                    • tril
                      Contao-Urgestein
                      • 07.01.2010
                      • 2939

                      #11
                      Also ich habe mit der neuen RC3 in einer lokalen Umgebung 80.000 Empfänger innerhalb von 12 Stunden raus gehauen

                      Kommentar

                      • melzebub
                        Contao-Fan
                        • 21.05.2010
                        • 292

                        #12
                        das klingt super. werde es nochmal frisch aufsetzen, ausprobieren und feedback geben.
                        Contao Webentwickler / Webdesigner aus Lüneburg - slash-works.de
                        kein Support per PN. Fragen gehören ins Forum.

                        Kommentar

                        Lädt...