Ankündigung

Einklappen
Keine Ankündigung bisher.

Email verschicken entkoppeln

Einklappen

Neue Werbung 2019

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

  • Email verschicken entkoppeln

    Hallo,
    der Flaschenhals meiner Anwendung ist momentan das Verschicken von Emails. Ich wuerde das dem User gern ersparen.
    Was wuerde denn Sinn machen um das Verschicken der Emails vom User-Skript zu entkoppeln? Mit system() ein Email-Skript anstossen scheidet ja aus weil ja trotzdem auf die Rueckkehr gewartet wird oder? Ein Cronjob selbst alle 5 Minuten ist fuer mich zu langsam/spaet. fork laeuft nicht unter Windows (egal), aber auf das Prozessende wird ja trotzdem gewartet, was beim User immernoch als Ladebalken visualisiert wird oder?

    Im Prinzip scheint mir die beste Loesung die DB/Cronjob Variante zu sein, Echtzeit sieht aber anders aus. Was meint ihr?
    "Mein Name ist Lohse, ich kaufe hier ein."


  • #2
    Mein erster Gedanke war auch DB/Cronjob.

    Aber macht es nicht vielleicht Sinn einen anderen SMTP Server zu suchen mit dem schneller eine Mail verschickt werden kann?

    Kommentar


    • #3
      Zugegeben im Moment laeuft das ueber SMTP von einem Test-Gmail Account, nur kann ich mich nicht drauf verlassen dass das Email Verschicken im Produktivsystem so sehr viel schneller ist, wenn ich die Technik aendere.
      "Mein Name ist Lohse, ich kaufe hier ein."

      Kommentar


      • #4
        Also normal solltest du keine so großen Probleme bekommen wenn du eine Email verschickst. Ist das wirklich bei einem einzigen Mailversandt schon merkbar oder erst wenn wirklich Last auftritt?

        Kommentar


        • #5
          Hallo Chriz,

          dieses Thema haben wir vor 4 Jahren mit einem eigenen SMTP-Cluster gelöst. Die eigentlichen Serverknoten haben dabei lokal keinen Mailserver laufen, sondern nutzen den Relay als MX. Das zeigt Wirkung - bis heute. Sich auf gmail zu verlassen ist für ein Livesystem ein glatter error by design.
          Viele Grüße,
          Dr.E.

          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          1. Think about software design before you start to write code!
          2. Discuss and review it together with experts!
          3. Choose good tools (-> Adventure PHP Framework (APF))!
          4. Write clean and reusable software only!
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

          Kommentar


          • #6
            Nun wie wäre es wenn du die Cronjob-Idee weiter ausbaust und mit deinem Script einfach nach einer Änderung die Cronjob-Einstellung auf die nächste Minute setzt? Dann kann es maximal 60 Sekunden dauern bis die Mail rausgeht und deine Ladezeit ist unabhängig davon.

            Ich weiss es gerade nicht, kann man in einem Cronjob auch Sekundenangaben machen? Falls ja wäre das ja noch besser...

            Kommentar


            • #7
              Ich glaube Cronjob läuft nur alle 1 Minute. Aber man könnte ihn ja eben auf 1 Minute setzen, das Skript zum Email verschicken stört ja nicht groß! Wenn keine Emails verschickt werden wäre es halt ein kleiner unnötiger Aufruf aber der stört wohl kaum.

              Kommentar


              • #8
                Hallo, danke fuer eure Ideen.

                @dr.e.
                Naja was heisst error by design, ich verwende ja Gmail im Produktivsystem nicht, aber irgendwie muss die Email nunmal verschickt werden, und einem Hostingprojektkunden kann ich nunmal keinen SMTP-Cluster andrehen.

                @cycap & Florian
                Ich find die Idee immer noch nicht so gut, muss doch moeglich sein asynchron einen weiteren Prozess anzustossen. Ich mach mich in der Richtung mal schlau.
                "Mein Name ist Lohse, ich kaufe hier ein."

                Kommentar


                • #9
                  Muss innerhalb des Arbeitsprozesses mehr als eine mail verschickt werden oder wieso ist dieses Senden ein Flaschenhals in der Anwendung? Eine einzelne Mail flutscht doch im Bruchteil einer Sekunde durch.
                  PHP-Code:
                  if ($var != 0) {
                    
                  $var 0;

                  Kommentar


                  • #10
                    wo wir grad bei asynchron sind... kommt evtl ajax in frage?

                    Kommentar


                    • #11
                      Auch schon dran gedacht. Schätze die Applikation soll sich wohl nicht auf JS verlassen.
                      --

                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                      --

                      Kommentar

                      Lädt...
                      X