Nein die Hard bounces werden anhand zurückgesendeten E-Mails erkannt. Soft bounces überhaupt nicht, weil er keine Kennung in der Mail hat. Als Soft bounces werden aber die Wiederholungsversuche beim Versand gezählt, beim PHP mail() gibt es keine Wiederholungen, weil er den Fehler nicht kennt.
Zuletzt geändert von mirko am 29.11.2009, 18:34, insgesamt 1-mal geändert.
Kommt drauf an, wenn der SMTP-Server auf dem gleichen Server liegt, dann geht es mit PHP mail() nicht schneller. Der Nachteil an PHP mail() ist, man sieht keine Fehler. Beim PHP mail() gibt es nur \"Versendet\" oder \"Nicht versendet\". Beim SMTP sieht man die Fehlermeldungen z.B. Kein Speicherplatz mehr frei, Limit überschritten...
Man muss zu dem Thema Script halt wissen, dass diese auf einem Webserver nur eine gewisse Zeit laufen dürfen. Ist die Zeit abgelaufen, werden diese einfach beendet = abgeschossen. Und genau das ist das schwierige für einen Entwickler, man weiss einfach nicht, wann es so weit ist.
Auf dem einen Server darf man die Scripte ewig laufen lassen, auf einem anderen, die meisten, nur 30 Sekunden. Man muss versuchen in der Zeit alles zu schaffen, nur das klappt natürlich nicht, wenn die Einstellungen zu hoch gewählt sind. Automatisch kann man die optimalen Einstellungen leider auch nicht voreinstellen, weil jeder Server anders schnell ist. Bei dir gehen 100 Mails, bei dem anderen vielleicht in gleicher Zeit 200. Man muss als Mensch also anschauen, wie viele gehen durch und entsprechend nach unten (oder oben) den Wert korrigieren.
ich mag ja manchmal dumm sein, aber als ich in dne letzten 30 Minuten (Wartezeit) über deine Worte nachdachte, setzte sich in meinem Kopf einfach durch überlegen bausteinmäßig genau die Erklärung zusammen, die du jetzt auch aufgeschrieben hast.
Bin quasi kurz vorher selbst drauf gekommen und hab dadurch auch verstanden, warum du sagtest, ich soll auf 100 reduzieren.
Na klar. das programm konnte immer bis ca. 120 Mails verschicken, dann kam ne Sperre oder sowas. Dann musste der Mailer 30 Minuten warten.
Da er aber nun nur 100 verschickt hat, kam die Sperre nicht und es kann gleich ne Minute später (bei mir zzt. 5 Minuten :o) wieder 100 verschicken, weil keine Sperre da ist fürs Ausführen vom cronjob.
Und da stellte sich mir auch die Frage, ob man die 30 Minuten nicht einfach reduzieren kann, damit ich nicht nur 100 Mails, sondern die maximale Höchstzahl an Mails verschicken kann.
Et Voila, du lieferst die Antwort.
Und übrigens hat das reduzieren auf 100 Mails auf einmal dazu geführt, dass zwischen 1557 und 1657 keine 30 Minuten Wartezeit lagen, sondern nur 3, weil ich nach 3 Minuten dat cron.php einfach mal manuell ausgeführt hab :)
Jetzt verschickt es alle 5 Minuten 100 Mails. Ich hab mir auf dem Server die Möglichkeit einrichten lassen, einen Job anzulegen, damit das Script einmal pro Minute ausgeführt wird, und dnan kann ich mindestens 6000 Mails pro Stunde verschicken, und damit bin ich schon voll zufrieden.
Also sei mir nicht böse, dass ich so fuchsig wurde, aber mich beschäftigt sowas immer, und ich hab vor lauter Frust bis jetzt noch kein Auge zu gemacht. Ich hab ja in der Nacht mit dem Newsletter angefangen. Fast 24 Stunden wach, weil es mich fuchst, wenn am Computer was nicht so läuft, wie ichs will.
Aber jetzt hab ich voll kapiert, wo das problem lag, du ahst ja auch dabei gewonnen und weißt in Zukunft, wa slos is,t wenn jemand von langen Pausen spricht, und mir gehts wieder gut. Jetzt kann ich mich endlich ein bisschen aufs Ohr hauen.
Du musst jetzt erstmal bis zur Aufhebung der Datenbanksperre warten, das ist auf 30 Minuten voreingestellt. Erst danach wirken deine Änderungen. Das könnte man zwar umgehen, dazu müsstest du das Script crons.php im Texteditor öffnen und nach den 1800 suchen und einen kleineren Sekundenwert eingeben z.B. 60 für eine Minute.
Hintergrund der Datenbanksperre, ohne zu technisch zu werden, ist die Vermeidung des Doppelversands von E-Mails. Hat man einen richtig guten Server, der es erlaubt ein Script z.B. 5 Minuten laufen zu lassen, dann bekommt man natürlich richtig viele E-Mails raus. Wird das CronJob-Script alle 1 Minuten aufgerufen, dann würden sich bei der 5 Minuten Laufzeit natürlich die Scriptaufrufe überschneiden und damit E-Mails doppelt versendet werden. Zur Umgehung des Problems wird die Datenbank gesperrt, die Sperre wird aufgehoben sobald das Script ordentlich wieder beendet wird. Kommt es zu einem Scriptabbruch, dann wird die Sperre nicht aufgehoben und man muss 30 Minuten warten.
Zur Umgehung dieser Sperre muss man weniger E-Mails versenden lassen und der PHP Safe Mode solle deaktiviert werden, damit das Script selbst seine Ausführungszeit erhöhen kann.
Hab ich schon gemacht, hat aber nichts bewirkt. Passiert trotzdem schonwieder seit 15 Minuten nichts.
Aber komm doch nochmal auf diese Sache mit dem Scriptaufruf und der datenbanksperre zurück. Denn das könnt ja das Problem sein. Schließlich sind es immer knapp über 30 Minuten Pause.
\"Wenn er 30 Minuten Pause macht, deutet das eher auf einen Scriptabruf hin. Bei einem Scriptabruf wird 30 Minuten gewartet und danach gibt sich das Script selbst wieder frei und ignoriert die Datenbanksperre.\"
Cronjob wird alle 5 Minuten aufgerufen. (geht beim kostenlosen cronjob.de nicht häufiger :o) Deine Deutung ist also eindeutig falsch.
Die Prüfung auf zu versendende E-Mails steht auch auf 1 Minute
Diese Einstellungen sind also definitiv KEINE Erklärung dafür, weshalb dein programm nur alle 30 Minuten mal 120 Mails verschickt. (obwohl es 200 pro Paket verschicken soll)
Das einzige, was auf 30 Minuten steht ist die Prüfung von Bounce-E-Mails.
Nach jedem Verschicken zeigt er mir an, dass er ein paar Bounce-Mails mehr hat. Meinst du, es könnte daran liegen?
Ansosnten versteh ich nur die Hälfte von dem Scriptgerede :)
Dann musst du auch mal hinschreiben, ob es per CronJob oder im Browser ist!
Per CronJob
Unter Menü Einstellungen - Geplante Aufgaben anschauen ob eingestellt ist, dass er alle 1 Minuten \"Prüfung auf zu versendende E-Mails\" ausführt.
Das CronJob-Script muss natürlich ebenfalls alle 1 Minuten aufgerufen werden, nicht alle 30 Minuten.
Wenn er 30 Minuten Pause macht, deutet das eher auf einen Scriptabruf hin. Bei einem Scriptabruf wird 30 Minuten gewartet und danach gibt sich das Script selbst wieder frei und ignoriert die Datenbanksperre. Unter Menü Einstellungen - Optionen, Registerkarte E-Mail-Versand bei \"Anzahl zu versendende E-Mails\" den Wert auf 100 ändern. Und dann schauen ob er die 100 pro Minute versenden kann. Alternativ den PHP Safe Mode deaktvieren, falls dieser aktiv ist, dann kann er normalerweise seine Scriptlaufzeit selbst erhöhen.
Deine Antworten passen nicht zu meiner Frage. Ich werde langsam ein wenig sauer.
Ich mache das natürlich mit Cronjob. Wie du selber sagst, kann es beim Live-Versand keine Pausen machen.
Folgendes beobachte ich:
Das System versendet immer 100 bis 120 E-Mails (ich hab angegeben, es soll 200 auf einmal verschicken) und das in wenigen Sekunden.
Im Versandprotokoll ist unten die Liste von E-Mails, an die der Newsletter schon versendet wurde, und die noch für den Versand vorgesehen sind.
Mir fällt jetzt folgendes auf. Immer wenn das Programm 120 Mails verschickt hat, hört es wieder auf zu verschicken und dann verlängert sich die Liste wieder um einige Einträge. Dann tut sich ne halbe Stunde gar nichts beobachtbares und dann verschickt das System wieder 120 Mails und hört wieder auf zu senden.
Dann verlängert sich die Liste der E-Mailadressen, die zum Versand vorgesehen sind wieder um einige Einträge. Dann ist wieder 30 Minuten lang nichts beobachtbar, und dann verschickt das System wieder 120 Mails.
Wieso macht das Programm ständig alle 120 Mails 30 Minuten Pause, will ich jetzt endlich wissen.
Was hat das Programm für ein Problem?
Du bist doch der Entwickler, du muisst doch wissen, wovon ich rede. Das Ding ist dein Werk. Und zurzeit bin ich einfach nur stinkig, dass ich 150 Euro bezahle und dann eine derartig langsame Krücke bekomme.
Fakt ist, dass das programm alle 120 E-Mails den versand für mindestens 30 Minuten unterbricht. Ich bekomme keine Fehlermeldungen. Alle anderen Funktionen laufen rasendschnell ab.
Ich widerhole jetzt auch nochmal folgendes, was vielleicht nicht ganz unwichtig ist: Der Newsletter enthält 8 Links und ich hab mal zum Ausprobieren angeklickt, dass die Klicks auf alle Links und die E-Mail-Öffnungen gezählt werden sollen.
Ich weiß ja nicht, ob das Vorbereiten der E-Mails durch die 8 Links und die angeforderte Klickstatistik so umfangreich ist, dass das Programm immer ewig lange braucht zum Vorbereiten, bevor es die nächsten Mails verschicken kann.
Das kannst nur du als Entwickler mir sagen, aber du musst bitte deine Antworten auch mal an dem ausrichten, was ich dir hier Beobachtbares berichte.
Also, wo kommen diese Pausen zwischen dem Versenden dieser 120 Mail-Pakete bei Cronjob-Versand her? Was macht dein Programm zwischen dem versenden während dieser langen Pausen?
Und vor allem, wie kann ich das beschleunigen? 250 Mails pro Stunde ist einfach inakzeptabel, bei einer Mailgröße von 22 kb. Und 150 Euro für ne Lizenz.
Ich habe bei den geplanten Aufgaben eingestellt, dass im Intervall von 30 Minuten auf Bounce-E-Mails geprüft werden soll. Aber damit hängt das bestimmt nicht zusammen, dass er immer mind. 30 Minuten pausiert, oder??
Also bis zum ersten Newsletterversand war ich absolut begeistert von deinem Programm. Aber jetzt schleicht das da so langsam vor sich hin, das ist schon nicht mehr feierlich.
Zuletzt geändert von Christoph Hannemann am 27.11.2009, 14:28, insgesamt 1-mal geändert.
Wie nun ist das Versand im Browser oder per CronJob? Im Browser kann er eigentlich keine Pause machen, sobald die Seite fertiggeladen ist, wird die nächste aufgerufen und entsprechend die nächsten versendet, so geht es immer weiter. Wichtig ist das Fertigladen der Seite, im IE macht er dann automatisch einen Reload. Beim Firefox wartet er bis der Versand auf der einen Seite fertig ist, dann kommt unten ein JavaScript-Block, der den Refresh im Firefox (und anderen Browsern) macht.