Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] czytanie danych wiekszych niz 8192 bajty?
Forum PHP.pl > Forum > PHP
M_a_d_Dog
hej,
Pisalem w sekcji Przedszkole, ale tam nie znalazlem odpowiedzi, sprobuje wiec tutaj.
nie bardzo wiem jak sobie z czyms takim poradzic, otoz mam taki kod, ktory zczytuje dane zwracane ze zdalnego serwera:

  1. <?php
  2. function Get_Server_Data($serverip,$serverport)
  3. {
  4.  
  5. $socketss = fsockopen( "udp://" . $serverip, $serverport);
  6. if($socketss != false)
  7. {
  8. socket_set_timeout($socketss, 0, 500000);
  9. fwrite($socketss, "info\");
  10. $server_info = stream_get_contents($socketss,-1);
  11.  
  12. }
  13. fclose($socketss);
  14. return $server_info;
  15. }
  16. ?>


niestety nie moge przeczytac tym sposobem wiecej niz 8192 bajty.
jak zmodyfikowac ten kod by odczytac powiedzmy dwa razy dluzsze dane? jakas wskazowka moze?
.radex
może za pomocą curl, lecz nie wiem jaki jest konkretny tego cel
M_a_d_Dog
to wycinek kodu skryptu obrabiajacego statsy serwera gry.
do tej pory serwer nie zwracal danych dluzszych niz 8KB, ale po wyjsciu nowej wersji wypluwa dodatkowe dane i skrypt z kodem powyzej nie zczytuje calosci tych danych, wiec skrypt szwankuje nie dajac pelnych resultatow...
potrzebowalbym aby za pomoca stream_get_contents () lub fread() zczytac wiecej (na raz) - ale tego nie potrafie przeskoczyc, wiec pytalem czy jest jakis inny sposob?
zimi
to będzie tylko strzał, nie bawiłem się zbyt wiele na strumieniach
wejdź do manuala w funkcję fread" title="Zobacz w manualu PHP" target="_manual i napisz coś a'la 4 podany w manualu kod z funkcją feof i pętlą while
z tego co widzę strem_get_contents powinno działać dobrze (chyba że już czytać nie umiem), ale w sumie też bym chyba próbował coś z while zrobić biggrin.gif:P
jak mówię to tylko strzał...

Dopisek: za przekroczenie czasu maksymalnego wykonywania skryptu nie biorę odpowiedzialności biggrin.gif:P
M_a_d_Dog
niestety wywala mi sie wtedy cos takiego - w zasadzie to samo mialem jak w stream_get_contens dawalem wartosc wieksza niz 8192 jako maxlength:


Proxy Error


The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request POST /matchwatch/mecz.php. Reason: Error reading from remote server
zimi
trochę sobie szukam chodź w sumie to Ty powinieneś robić biggrin.gif:P
8192 bajty to ładne równe 8 KB więc sobie pomyślałem że to część informacji przesyłana przez UDP
no i to jest właśnie wielkość pakietu
więc jak podejrzewam łącząc się w taki sposób jak dotychczas pobierany jest jedynie pierwszy pakiet
tak sobie wnioskuję...
w fsockopen nie dopatrzyłem się niczego ciekawego co by mogło w tym pomóc
ale w socket_create" title="Zobacz w manualu PHP" target="_manual jest tabela typów połączeń, a w niej typ SOCK_DGRAM, na którym wg manuala opiera się UDP i mam dziwne przeczucie że aby otrzymać resztę pakietów musisz właśnie tam szukać rozwiązania problemu

ale powiedziałem tyle ile przed chwilą udało mi się wyczytać... więc nie wiem czy dobrze mówię...
M_a_d_Dog
dzieki za wskazowke, zaglebiam sie w lekturze smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.