Mailinglisten-Archive |
Hi Norbert, On 7 Oct 2002 at 11:50, Norbert Pfeiffer wrote: > Nun muessten die PHP-Developer, das nur noch auslesen und > als Rueckgabe fuer die Function mail(); von PHP verwenden. > Diese gibt naemlich keinerlei Informationen her ... :-( Ja, die einzige Info die man von TCP bekommen könnte ist, dass die Übertragung vom script auf den entfernten MTA erfolgreich war, aber nicht, ob er die Mail so akzeptiert und ob er die überhaupt zustellen konnte. Letzteres Ergebnis zu bekommen wäre wohl das intereanteste aber das wirst Du in 90% der Fälle auf keine Weise bekommen können (außer durch eine Antwortmail oder so) das führt dazu, dass ein reines true/false das von mail() zurückgeliefert werden könnte irreführend ist also ist da nichts implementiert (zudem nutzt die mail() auf den meisten Systemen einen lokalen MTA (z.B. sendmail) wo ein Fehler als fatal error gehandelt wird und sich ein gemeinsamer Handler schwer tun würde. Würde man das mit UDP lösen fängt es damit an (ohje, jetzt gleite ich wirklich weit von PHP ab *g*), dass der SMTP-Cleint sich ja zunächst mit einem HELO am SMTP- Server anmeldet, dann ihm sagt das jetzt eine neue Mail kommt und dann die Daten am Schluss ein Punkt in einer eigenen Zeile. Nach jedem dieser Schritte meldet der Server einen Erfolg. Eines der Probleme bei der UDP wäre die Zuordnung wenn da jetzt zwei Übertragungen parallel ablaufen. Dann müsstest Du jedem Paket eine Unique-ID mitgeben und jeder cleint und Server müssten jeweils pro IP ein gemiensamen Speicher haben auf den alle threads zugriefen können, damit der Empfangende Thread die an den verarbeitenden Thread weiterleiten kann. Zudem muss selbst implementiert werden was passiert wenn eines der Pakete verloren geht (was im Internet, noch häufiger als bei der Post, durchaus mal passiert...) Wenn das z.B. nach der Autentifizierung passiert wartet der Server bis zum Timeout auf eine Nachricht und der client wartet bis zum Timeout auf eine Rückmeldung. In TCP ist das recht elegant gelöst zudem ist die zusätzliche Belatung nicht erheblich größer als die Zeit, die zum Übertragen der "Nutzdaten" nötig ist. Für weitere Details empfehle ich aber dann doch die entsprechende Fachliteratur oder deinen lokalen Netzwerk Guru :) johannes
php::bar PHP Wiki - Listenarchive