PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Newsletter Versand bricht ab



JoJo
18.08.2009, 19:37
Hallo zusammen,

ich nutze das normale "Newssystem" zum Versenden von Newslettern - wobei ich stets die Variante "nur Newsletter" auswähle!

Folgendes Problem tut sich jetzt auf:
Mittlerweile habe ich ca. 2.200 angemeldete User auf meiner Seite ... wie viele davon wirklich den NL-Empfang aktiviert haben weiß ich gar nicht - um ehrlich zu sein. Es werden aber schon einige sein, so ist nicht!

Seit ca. 2.000 Usern bekomme ich nach dem NL-Versand die Meldung: "Es wurde keine Datenbank ausgewählt".

Ich denke mal, dass dort einfach irgendein Time-Out von PHP/MySQL überschritten wird - ich weiß grade nicht welcher und möchte daran auch eigentlich am liebsten nichts ändern! Stelle mir das ganze anders vor!

Stichwort "Optimierter NL-Versand". Quasi als "NL-Spooler" ...

Sprich es wird erstmal der Text und die Empfänger in die DB eingetragen. Danach wird in 250er Schritten (o.ä.) der NL an die Empfänger versendet. Derzeit wird der NL zwar noch versendet, aber wohl nicht mehr an alle User - da er vorher mit oben genannter Meldung "abbricht".

Hat jemand sowas schonmal gelöst/gemacht? Ideen, Vorschläge, Ansätze? ;) Ist mein Ansatz gut? :D

Beste Grüße
Jo

Achja ich nutze das VMS 1.2.3, PHP5, MySQL5 ;)

eRaaaa
18.08.2009, 19:52
hi, das ist ja auch unteranderem das, was ich letztens auch schonmal angesprochen hatte.

du kannst dafür eine queue benutzen. --> pear.php.net (http://pear.php.net/package/Mail_Queue)

oder du baust dir das selber ähnlich auf, indem du alle mails erstmal in deine db schreibst und anschließend versendest und dabei immer nen flag "gesendet" o.ä. setzt.
glaube pear macht das ähnlich.

JoJo
18.08.2009, 20:02
Habe nix gefunden was in diese Richtung geht - also an Threads hier im Forum ... obwohl ich wirklich fleißig gesucht habe ;)

Du hast es mit "PEAR" gelöst? Naja, dadurch wird ja die DB einmal ordentlich aufgeblasen ... erst Recht, wenn der Text der Mail da auch mitgespeichert wird ...

Das mit dem selber basteln find ich ganz gut ;)

Prinzip (vielleicht kannst du noch bewerten ob ich das richtig liege):
Wenn ich auf Newsletter-Versenden klicke trägt das Script in eine extra Tabelle ALLE User mit einer ID, der Mail-Adresse und dem flag "gesendet 0/1" ein.

Dann sage ich Select * Where gesendet = 0 (Limit 250) ... Suche mir aus der DB den entsprechenden Text für den Newsletter raus (der wird ja gespeichert) und verschicke den NL an die 150 gefundenen User und setze gesendet auf 1.

Das ganze dann als Cronjob, der alle 2 Minuten ausgeführt wird. Somit sollte das ja in 10 Minuten abgeschlossen sein ... Wenn das vom Cronjob aufgerufene Script keinen mehr findet (sprich alle gesendet = 1) dann macht er ja nix - wenns mans so proggt ;)


So viel zum Prinzip :D Gut? :D

Wenn ich jetzt aber "Newsletter versenden" anklicke und er die Tabelle für den Mailversand vorbereitet und füllt - dauert das dann nicht genauso lange wie der Versand selbst - bzw. annähernd solange, sodass es da auch "schnell" zu nem Timeout kommen könnte?!

Vorschläge/Feedback/Wünsche? :D

Beste Grüße
Jo

eRaaaa
18.08.2009, 20:27
also so wie du es beschrieben hast, hätte ich es in der art gemacht ja.(allerdings würde ich beim nächsten mal gleich diejenigen rauslöschen, die schon versandt wurden - aber vllt kennt ja jend ne super lösung) zu deiner frage ob das genauso lange dauert, ist jetzt die große frage. bzw die frage ist ja eig. wieso dein server diesen timeout macht. weil die db oder der server an sich austimed.

"Es wurde keine Datenbank ausgewählt" <-- das kommt ja nicht vom vms, oder irre ich mich ?

Lokutos
18.08.2009, 20:52
warum nicht einfach in 2 schritten versenden??
sprich erster durchgang 1000 User zweiter durchgang der rest.

kannst dich ja mal bei mir im skype melden dan kann ich dir da was bauen.

das über die datenbank zu machen finde ich persönlich zu unprofessionell.

das einfachste ist natürlich schon die zeit hoch zu setzen

JoJo
19.08.2009, 09:16
Hi,

woher der Timeout kommt weiß ich noch nicht soo ganz ;) um ehrlich zu sein. Kann auch sein, dass eine bestimmte "Query-Size" überschritten wurde - das is ja mein Problem ;)

Habe den Server eigentlich seit 2-3 Monaten RICHTIG schön und solide laufen ... auch mit mehr als 150 online User, vielen Klickern und bis zu 3 Slots pro User, läuft der Server weiterhin einwandfrei - hat mich ne Menge Optimierungsarbeit gekostet - siehe diverse Threads hier im Forum :D

Da würd ich nur ungern jetzt noch was ändern ... Habe mit Money-SMS übers Klamm-Forum Kontakt. Er hat wohl was gebastelt, dass das script "nur" 15 Sekunden versendet - in der Zeit halt so viele wie geht ;) Dann erneut 15 Sekunden, etc.

Wie genau das script läuft kann ich euch im Laufe des Tages vielleicht erklären ;)

Beste Grüße
Jo

DimpleX
21.08.2009, 16:09
moin,

wie versendest Du? , per php mailfunction oder per smtp

per smtp haste weniger probleme


DimpleX