Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyświetlenie strumienia dłuższego niż 8192 bajtów
Barton
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 2
Dołączył: 26.10.2008

Ostrzeżenie: (0%)
-----


Witam,

Staram się napisać webowy interfejs do obsługi poczty e-mail. Napotkałem taki problem:

  1. function listuj () {
  2. $this->wyslijKomende("LIST");
  3. $stan = $this->cmd();
  4.  
  5. while($this->answer != NULL {
  6. $this->answer = fread($this->socket, 8192);
  7. echo $this->answer;
  8. }
  9.  
  10. }


Polecenie LIST zwraca strumień danych (numer wiadomości i jej długość). Strumień odczytuję funkcją fread, ale ma on ograniczenie do 8192 bajtów, w związku z czym muszę zapętlić wyświetlanie aż do końca strumienia. I tutaj pojawia się pytanie: co wpisać w warunku pętli, aby w momencie kiedy strumień się skończy, skrypt przestał wyświetlać zmienną?

Pozdrawiam.

Ten post edytował Barton 6.03.2012, 18:17:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Barton
post
Post #2





Grupa: Zarejestrowani
Postów: 70
Pomógł: 2
Dołączył: 26.10.2008

Ostrzeżenie: (0%)
-----


Ok, wszystkie sposoby są prawidłowe. Przy ściąganiu samych wiadomości zaobserwowałem co jest przyczyną. Mianowicie po sciągnięciu wiadomości bufer jest zapełniany dalej, losowymi znakami... całkowicie tego nie rozumiem.

Funkcja odczytywania maili wygląda tak:

  1. function odczytaj($mailno) {
  2. fputs($this->socket, trim("retr $mailno") . "\n");
  3. while (($buffer = fgets($this->socket, 4096)) !== false) {
  4. echo $buffer;
  5. }
  6.  
  7. }


Cała reszta kodu nie ma nic do rzeczy gdyż jedynie otwiera połączenie i loguje co idzie sprawnie, ale na życzenie mogę wstawić. Wynik powyższej funkcji wygląda mniejwięcej tak:

[treść ściągniętej wiadomości e-mail][ciąg całkowicie losowych znaków wypisywanych aż do timeout'u]

Ma ktoś jakiś pomysł skąd się one biorą?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 15:43