Newsletter
Martin Hein
- programmiertechnik
Hallo Forum,
ich habe vor kurzem mal angefangen, mich mit dem Thema
Newsletter auseinander zu setzen und schon ganz gute
Tipps bekommen:
http://forum.de.selfhtml.org/archiv/2008/1/t164429/
Ich stehe aber immernoch vor der Entscheidung, ob ich auf
dem ohnehin schon nicht sehr performanten Webserver, etwas
selbst scripten, oder versuchen soll, ob sich dort eine
Software installieren lässt.
Etwas selbst zu scripten, wäre mir eigentlich lieber, weil
ich mich nicht um eine Schnittstelle zu der Software kümmern
müsste. Jetzt habe ich Zhalen bekommen:
Es geht um 16.000 Empfänger
Ich habe keine Idee, ob das nun viele sind oder nicht. Konkret
frage ich mich, ob das eine Fall für eine Software ist, oder
ich so mit Kanonen auf Spatzen schiessen würde.
Was meint Ihr ?
beste gruesse,
martin
Hi,
Es geht um 16.000 Empfänger
Ich habe keine Idee, ob das nun viele sind oder nicht.
sagen wir es so: Wenn Du an einen Versand mittels PHP denkst, wirst Du bei dieser Menge in *jeden* potenziell gesetzten Timeout laufen. Sofern auf Deinem Server ein solcher eingerichtet ist, ist der Versand also nicht ohne ein sauberes Unterbrechungs-und-Wiederaufnahme-Konzept möglich.
Konkret
frage ich mich, ob das eine Fall für eine Software ist, oder
ich so mit Kanonen auf Spatzen schiessen würde.
Ich denke, dass man ab einer dreistelligen Anzahl Empfänger über professionelle Software nachdenken sollte, und ab einer vierstelligen Anzahl keinen Gedanken mehr daran verschwenden sollte, ob es sich lohnen könnte. Wenn bei Deinen 16.000 der Punkt also kein Komma sein soll, halte ich die Wahl für getroffen.
Wenn die Anzahl sechs- bis siebenstellig wird, kannst Du übrigens wieder über die Entwicklung eines eigenen Tools nachdenken ;-)
Cheatah
echo $begrüßung;
sagen wir es so: Wenn Du an einen Versand mittels PHP denkst, wirst Du bei dieser Menge in *jeden* potenziell gesetzten Timeout laufen. Sofern auf Deinem Server ein solcher eingerichtet ist, ist der Versand also nicht ohne ein sauberes Unterbrechungs-und-Wiederaufnahme-Konzept möglich.
*jeden*? Wenn ein PHP-Script auf der Kommandozeile gestartet wird, ist schon mal die max_execution_time auf 0 gestellt. Es ist also erst einmal keine Beschränkung vorhanden. Diesen Wert kann man zwar im Script wieder ändern, aber sein Startwert lässt sich (am CLI!) nicht durch eine php.ini-Konfiguration einstellen.
echo "$verabschiedung $name";
Hi,
sagen wir es so: Wenn Du an einen Versand mittels PHP denkst, wirst Du bei dieser Menge in *jeden* potenziell gesetzten Timeout laufen. Sofern auf Deinem Server ein solcher eingerichtet ist, ist der Versand also nicht ohne ein sauberes Unterbrechungs-und-Wiederaufnahme-Konzept möglich.
*jeden*? Wenn ein PHP-Script auf der Kommandozeile gestartet wird, ist schon mal die max_execution_time auf 0 gestellt. Es ist also erst einmal keine Beschränkung vorhanden.
wenn es keinen Timeout gibt, kann da auch nichts reinlaufen. Siehe auch den Begriff "potenziell" sowie den mit "Sofern" beginnenden Satz.
Cheatah
Hallo,
der PHP-interne Timeout ist IMHO immer die harmlosete Huerde auf einem Shared-Host. Viel restriktiver sind die maximale Anzahl zulaessiger Prozesse je Kundennummer sowie die RAM- und CPU-Begrenzung, die mittlerweile fest in das Server-Management implementiert sind. Hinzu kommt, dass das Freiwerden von Ressourcen nicht sofort nach der Freigabe selbiger erkannt wird, sondern sehr zeitverzoegert. D.h. man killt einen Prozess, um einen neuen starten zu koennen, aber muss warten, bis der Obermacker das Killen auch mitbekommen hat. Das ist wirklich nicht sehr optimal geloest (aber nur fuer den Kunden ... ;)
Gruss und Dank
Norbert
echo $begrüßung;
wenn es keinen Timeout gibt, kann da auch nichts reinlaufen. Siehe auch den Begriff "potenziell" sowie den mit "Sofern" beginnenden Satz.
Mir sind die Einschränkungen in deiner Formulierung sehr wohl aufgefallen, doch insgesamt hinterließ sie bei mir ein wenig den Eindruck, dass es generell ein unumgängliches Timeout gäbe.
echo "$verabschiedung $name";
Hallo Cheatah,
Ich denke, dass man ab einer dreistelligen Anzahl Empfänger über professionelle Software nachdenken sollte, und ab einer vierstelligen Anzahl keinen Gedanken mehr daran verschwenden sollte, ob es sich lohnen könnte. Wenn bei Deinen 16.000 der Punkt also kein Komma sein soll, halte ich die Wahl für getroffen.
Mit dem Punkt ist tatsächlich das deutsche Tausender-Trennzeichen
gemeint. Die Entscheidung fällt also in dem Fall nach deinem
Dafürhalten auf eine professionelle Software. Gibt's da einen
persönlichen Favoriten für Dich?
danke und
beste gruesse,
martin
Hallo Martin,
Was meint Ihr ?
hmm,
auf einem WebSpace bei 1&1 habe ich problemlos mehrere tausend
Mails versendet ohne in eine der strengen Restriktionen zu geraten.
Konzept:
<?php
$MTA = ini_get('sendmail_path'); /* Mail Transfer Agent */
function my_sendmail($path4mail) {
global $MTA;
$fp = popen($MTA, 'w');
$wr = fputs($fp, file_getcontents($path4mail));
$cl = fclose($fp);
}
?>
Schon der erste Test wird zeigen, dass man via popen() zig-mal so
viele Mails versenden kann, wie mit der Mail-Funktion von PHP.
Gruss und Dank
Norbert
Hallo!
Du schreibst mal eben 16.000 Dateien auf die Platte (wenn man beim obigen Beispiel bleibt)? Aufwändiger gehts doch wohl kaum...
Gruß,
Manu
Hallo Manu,
Du schreibst mal eben 16.000 Dateien auf die Platte (wenn man beim obigen Beispiel bleibt)?
Aufwändiger gehts doch wohl kaum...
wieso,
was vermutest Du macht eine Newsletter-Software ... ?
Es schreibt die Mails in ein Queue und versendet sie dann. Allerdings
macht man sich hier die Muehe Mailbody und Mailheader in verschiedene
Ordner zu schreiben.
Den Aufwand habe ich mir gespart ... ;-)
Gruss und Dank
Norbert
Interessanter Ansatz, werd ich beizeiten mal ausprobieren...
Ich bin davon ausgegangen,d ass sendmail dasselbe nocheinmal macht...
Gruß,
Manu
Hallo Norbert,
das hört sich alles ganz schlüssig an und wenn Du das
genauso machst, funktiniert's ja definitiv. Ich will
mal resumieren, wie ich das verstanden habe:
1. ich erstelle 16.000 Textfiles und lege sie in ein Verzeichnis.
2. ich definiere einen Cronjob, der:
- jede volle Minute gestartet wird.
- dann, wenn in dem Verzeichnis ein Textfile liegt,
dass dann als Mail verschickt, löscht und das
Spiel wiederholt.
- dann, wenn in dem Verzeichnis nichts liegt abbricht.
oder, wenn er 25 Sekunden läuft abbricht.
Das heisst, dass in dem Moment, wo die Files i.d. Verzeichnis
abgelegt werden, startet der Versand (bzw. man definiert den
Cronjob so, dass er z.B. nur innerhalb eines Zeitfensters läuft).
Einer Frage zu 1.:
------------------
ist es unproblematisch (in einer Schleife) 16.000 Files anzulegen ?
Was in der txt drinsteht, kann ich mir auch noch nicht vorstellen,
aber das sollte sich herausfinden lassen ;)
danke und
beste gruesse,
martin