Mailinglisten-Archive |
Hi, ich habe hier ein ärgerliches Problem beim Kommunizieren mit einer POP3 Mailbox über einen Socket Connect. Ich habe einen Sockel auf Port 110 des Mailservers erstellt, sende meine Kommandos via fputs() auf den Sockel und hole mir die Antwort via fgets(). Alles funktioniert wunderbar bis zum eigentlichen Auslesen der E-Mail, die ich über "RETR <number>" oder über "TOP <number> <lines>" hole. Mein Code sieht an dieser Stelle wie folgt aus: $email = NULL; while ( !feof ( $this->connect ) ) { $email .= fgets ( $this->connect ); } Hier tritt das Problem auf, dass zwar die komplette E-Mail ausgelesen wird, aber das FEOF nur mit erheb- licher Verzögerung (exakt 60 Sekunden) erkannt wird. In meiner Testkonstellation habe ich in jedem Durch- lauf der While-Schleife die Zeit ausgeben lassen und nach der While-Schleife erneut. Die komplette Email wird innerhalb einer Sekunde gesaugt, aber bis er nach der letzen Zeile aus der While-Schleife springt, dauert es exakt 60 Sekunden. Mein erster Ansatz, den socket_timeout zu kürzen, hat nichts gebracht. Auch wundert es mich, dass 60 Sekunden Verzögerung die max_exection_time von 30 Sekunden igno- rieren, was ja daraufhin deuetet, dass innerhalb dieser Zeitspanne keine Prozessorzeit verbraucht wird. Ein hässlicher Workaround ist, die Schleife zu verlassen wenn zwischen den Durchläufen mehr als n Sekunden vergangen ist. Allerdings ist dies keine Lösung die mich zufrieden stellt. Wer weiß rat bzw. hilft mir auf die Sprünge? Gruß, Andreas -- http://www.andreas-demmer.de
php::bar PHP Wiki - Listenarchive