PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : E-Mails durch Zeitgesteuerte Aufgaben versenden geht bei vielen Empfängern nicht


stefanstp
29.01.2008, 07:27
Ich habe jetzt ein E-Mail-Newsletter System entwickelt, welches in der Nacht automatisch sehr viele E-Mails versendet (zur Zeit ca. 1000 Stück). Jedoch stoppt das Script nach ca. 15 Sekunden und ich bekomme von VBulletin diese Fehlermeldung:
Datenbankfehler in vBulletin 3.6.4:

Invalid SQL:

SELECT username, email, languageid
FROM nvb3_user
LEFT JOIN nvb3_userfield
ON nvb3_userfield.userid=nvb3_user.userid
where field13 = 'täglich - Text';

MySQL-Fehler : MySQL server has gone away
Fehler-Nr. : 2006
Datum : Tuesday, January 29th 2008 @ 07:14:05 AM
Skript : http://www.psd-tutorials.de/modules/Forum/admincp/cronadmin.php?do=runcron&cronid=20
Referrer : http://www.psd-tutorials.de/modules/Forum/admincp/cronadmin.php?do=modify
IP-Adresse : 80.128.20.156
Benutzername : Stefan
Klassenname : vB_Database

Ich habe alle Abfragen usw. getestet, sobald ich ein Limit einbaue, gehts. Somit liegt es mal wieder an der Beschränkung der Laufzeit. Wenn ich aber das Newsletter-System von VBulletin nehme, gehts. Somit muss es ja rein theoretisch auch so möglich sein oder? Bzw. wie kann ich es erreichen, dass der Server nicht aufhört zu versenden?

######## START: täglich - TEXT #####################
$users_text = $vbulletin->db->query_read("
SELECT username, email, languageid
FROM nvb3_user
LEFT JOIN nvb3_userfield
ON nvb3_userfield.userid=nvb3_user.userid
where field13 = 'täglich - Text'
");

vbmail_start();

while ($user = $vbulletin->db->fetch_array($users_text))
{
$username = unhtmlspecialchars($user['username']);
$subject = "Newsletter";
$message = "Hier kommt der Text rein.";
vbmail($user['email'], $subject, $message);
}
vbmail_end();

Bitte um Hilfe

Stefan Petri

StGaensler
31.01.2008, 10:43
Ich habe alle Abfragen usw. getestet, sobald ich ein Limit einbaue, gehts. Somit liegt es mal wieder an der Beschränkung der Laufzeit. Wenn ich aber das Newsletter-System von VBulletin nehme, gehts. Somit muss es ja rein theoretisch auch so möglich sein oder? Bzw. wie kann ich es erreichen, dass der Server nicht aufhört zu versenden?Indem du das genau so löst, wie es vom Newsletter-System auch gelöst wurde: Eben nicht so viele Mails auf einmal herausschicken. D.h. du teilst den Versand auf z.B. 3 x 350 Mails auf, und hast damit drei Cronjobs, die du ein wenig versetzt starten lässt.
Beim Newsletter-System ist das dadurch gelöst, dass die Seite per JavaScript wieder geladen wird, und der nächste Schwung rausgeht - das kannst du natürlich bei einem Cronjob nicht machen, da musst du dir anders weiterhelfen.

Viele Grüße,
Stefan

stefanstp
31.01.2008, 10:59
Naja mehrere Crons werden nicht gehen, weil wir schon bald dadurch täglich 50.000 Mails versenden .... ??

StGaensler
31.01.2008, 11:26
Hallo,

ich meine nicht, du sollst die Mail dreimal verschicken, sondern in drei kleine Häppchen aufteilen - das sollte doch problemlos möglich sein, oder nicht?

Oder verstehen wir uns irgendwie anders falsch?

Viele Grüße,
Stefan

stefanstp
31.01.2008, 11:33
also mit einer schleife immer ca. 300 mails raus und dann den nächsten brocken ... ja werde ich mal probieren.