• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

PhP schleife in verbindung mit mail

steven

New member
Hi

Möchte innerhalb einer Schleife an verschiedene Mailadresse eine Nachricht schicken. Soweit kein Problem.

Nur möchte ich dies sichtbar haben. Im Detail:

Versende ich z.b. 10 Nachrichten dann erscheint der bestätigte Versandt immer komplett, will heißen nachdem alle 10 verschickt wurde erhalte ich eine nachricht mit der bestätigung.

Nun möchte ich aber das ich nach jeder verschickten Mail eine Kurze Info erhalte.

z.b.

for ($a=1;$<11;$a++)
{
mail (".......";
echo "Empfänger 1 hat die mail erhalten";
}

Nur dieses Modell funktioniert nicht da PHP anscheinend erste alle Mails verschickt und dann komplett die echo befehle ausgibt..

hat jemand nen Tip??

Danke
 
Chaotische Programmausführung?!

hmmm also wollen wir uns das mal genauer anschauen....
Du rufst also eine PHP Datei auf. Diese wird auf dem Server ausgeführt und die Ausgabe an den Browser zurückgeschickt. Schön....
Tja warum funktioniert das denn dann nicht, daß er da einfach eine Mail schreibt und mir die Zeile anzeigt?!?? Vielleicht liegt es daran, das PHP erstmal den kompletten Code ausführt und dann erst den geparsten und ausgeführten HTML Pansch an den Webserver zum Transport an den Browser liefert?!?!
PHP ist eine serverbasierte Skriptsprache, und kann vom Webserver entweder als CGI oder als Modul eingebunden werden. In beiden Modi wird der Ausgabestrom Deiner PHP "Programme" gepuffert und gesammelt an den Browser zurückgeschickt. Wenn Du also dafür sorgst, daß Du statt einer einzigen Zeile einen ganzen Wust an Daten schreibst, dann könnte das gewünschte eintreten und Du nach jeder Mail eine kurze Rückmeldung, bzw. ein Fortschreiten des Ladevorgangs Deiner Seite sehen. Aber ob das Spaß macht?!?!
 
hmm..

... sorry - aber das hab ich jetzt ehrlich nicht probiert, da mir dein vorhaben ein wenig 'suspekt' vorkommt :)

mach doch folgendes *schmunzel

file 1

ein script, welches in einer schleife x mal file 2 aufruft

file 2

der mail() und echo() befehl

-----------
ich denke, bei 10 mails ist das noch kein problem... aber wie sieht es denn bei 1000 requests aus !?

geb lieber so WENIG wie möglich aus; ist zwar nicht 'schon anzusehen' aber zweckdienlich :)
 
@MacMumins: vielleicht hab ich mich nicht klar genug ausgedrückt (oder zu sarkastisch :) )... es bringt nix die Sache noch komplizierter zu machen, in dem man mit zwei oder mehr Dateien arbeitet.... solange man in _einem_ Skriptaufruf bleibt, wird die Ausgabe _immer_ nach dem Aufruf, bzw. Versenden (und zwar aller Mails) erfolgen!!!
Das ganze kann zuverlässig nur über eine Client Pull erfolgen, d.h. Skript Start - Mail senden - Ausgabe an Browser - Skript beendet - Browser sendet refresh - nächste Mail senden - Ausgabe - usw.....
 
Mail

Hi Mumins

Endlich mal vernünftige Denkansätze, die möchtegerne belehrungen von manchen hängen mir schon zum Hals raus.
Deine Idee könnte sicherlich funktionieren, wegen der Menge ist das auch kein Problem da nur max 10 Stück in der Schleife hängen...

Danke soweit
 
@ALBU

Bist Du ein PHP Profi oder tust Du nur so?? Wenn Du einer bist gib doch mal konkrete Vorschläge, oder bist Du keiner?

An alle
Ich habe genau das gleiche Problem, bei mir sind es im Moment 4 Personen, aber es werden demnächst mehr als 100 Personen...

Wie kann man dieses Problem am besten lösen? Es muss mit PHP4 funktionieren.

DANKE euer Melzi
 
php?? was ist das... bin blutiger Anfänger und hab keine Ahnung, deswegen bin ich auch nicht zu konstruktiven Beiträgen in der Lage....

Spaß beiseite: wenn Du meine Posts mal durchliest, dann wirst Du bemerken, daß ich schon _zwei_ mehr oder weniger konstruktive Lösungsmöglichkeiten gegeben habe!!
Desweiteren habe ich versucht zu erklären, wieso denn die beschriebenen Varianten nicht funktionieren können!
Aber für alle die es nicht mitbekommen haben hier noch einmal die Zusammenfassung:
1. soviel Text erzeugen, daß der Server Puffer überläuft und die Daten vorzeitig an den Client Browser zurückgeschickt werden
2. Client-side-Pull
wie praktikabel die Lösungsansätze sind, und ob sie anwendbar sind, das muß Du im Einzelfall selbst entscheiden.....

Ich entschuldige mich dafür euch mit meinen Erklärungsversuchen gelangweilt zu haben. Ich dachte das Verständnis warum eine Sache nicht funktioniert würde helfen das Problem besser zu verstehen.
 
Und wie

mach ich das?? Wenn Du mir einfach mal <?php ***** ?> die sterne ersetzen könntest, wäre ich dir sehr verbunden :)

Also meinst Du soll ich den Puffer meines Webservers so vollmachen, dass der gleich alles ausspuckt?? sagen wir in etwa so

for($index=0;$index>1000;$index++){$text=$text + "pufferkiller";echo $text;}

Dann dauert der Aufruf meiner Site doch ewig und außerdem steht dann x mal pufferkiller da... *g*

HELP PLEASE

euer Melzi
 
tja das ist ja die Geschichte mit dem praktikabel.... nicht schön, könnte aber theoretisch funktionieren... ich gebe ja zu, daß ich diese Variante selbst noch nicht ausprobiert habe

die andere Frage ist allerdings wie praktikabel ist die Intention, d.h. was will ich erreichen und kann ich das mit den eingesetzten Tools überhaupt...
vernünftige Statusfortschreibungen bekomme ich nur über eine kontinuierliche Verbindung zwischen Client und Server hin und dann bist Du schon fast bei einer Socket Verbindung....
 
hmm

Hast schon recht, ich lass das bei mir so wie es ist, es steht dann halt am ende eine Zusammenfassung da und gut, aber wie kann ich jetzt einen Umbruch in meinen Variablen machen??

hab mal was von /n gehört, aber wie setzt man das richtig ein? Danke schon mal! --> Der Umbruch soll für meine Newslettermails sein...

euer Melzi
 
Also:

Die flush(); Funktion funktioniert SUPER! Super Tipp, Danke!!!

Aber wie kann ich prüfen, ob eine Mail auch wirklich verschickt wurde??? hab bei PHP.net, phpwelt.de usw. nix gefunden...

thx for help

euer Melzi!
 
Tja

geh doch mal auf den Link von afoeder und guck Dir mal die Meinung der User durch (leider englisch) dort steht, das Du ein paar einstellungen an deinem Webserver ändern musst, ich glaube aber, dass du keinen eigenen hast, so wie fast jeder hier, also wird dir das auch nicht viel nützen... *sorry*

Ich bin bei www.f2s.com , dort funktioniert das wunderbar, allerdings haben die im Moment sehr unstabile Server mit (seltenen) downtimes...

Wie kann man prüfen ob eine E-Mail <b>erfolgreich</b> verschickt wurde??

thx euer Melzi
 
Hi melzi

Hi

Zu deinem entsetzen habe ich einen Webserver :-( doch leider genau den falschen. Apache......++++

Naja, dann werde ich mal improvisieren..

cu
 
warum den falschen?
es ist doch GERADE der Apache, mit dem das angeblich besonders gut funktioniert...

aber wie gesagt, lies Dir mal die User-Comments von meinem Link oben durch, da stehen auch ein paar Tips, wie man mit Tricks flush() trotzdem zum Funktionieren bringt...
 
Wir reden aneinander vorbei!

Was ich meine ist, dass Du deinen Internet(Web)Server so konfigurieren kannst wie du willst! Einen Apache, PWS oder IIS usw. wird hier wohl jeder installiert haben (ich auch ;) )

Oder hast Du nen eigenen PC, der mit Apache, einer Standleitung ausgestattet ist und natürlich noch deinen DENIC eintrag? --> Ich glaube nicht...

Wieso hast Du den falschen Webserver? Du hast den besten den Du bekommen kannst! APACHE ist zwar unter Windows ein bissel langsam, er ist ja eigentlich auch für LINUX gemacht... <<egal>>

euer Melzi
 
Zurück
Oben