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
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Stawiałbym na to, że po prostu skrypt nie jest w stanie się wyrobić z odczytaniem tych danych w ciągu 30 sekund (na co wskazuje treść błędu).

1. Jeżeli powodem może być wielkość pobieranych danych wyłącz/zwiększ limit czasu wykonywania.
2. Możesz zwiększyć limit jednorazowo pobieranej porcji, albo w ogóle użyć stream_get_contents skoro i tak operujesz na całości danych.
3. Według manuala w sumie wystarczyłoby sprawdzanie w pętli czy fread nie zwróciło false (przy wykorzystania operatora identyczności, tj. ===).

Ten post edytował Crozin 6.03.2012, 19:33:02
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 - 20:45