Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Fsockopen - jedno połączenie, dwa żądania
Forum PHP.pl > Forum > PHP
Babcia@Stefa
Witam, czy da się w PHP poprzez funkcję fsockopen()" title="Zobacz w manualu PHP" target="_manual wysłać dwa żądania do serwera i odebrać obydwa ?

  1. <?php
  2. $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
  3. if (!$fp) {
  4. echo "$errstr ($errno)<br />\n";
  5. } else {
  6. $out = "GET / HTTP/1.1r\n";
  7. $out .= "Host: www.example.comr\n";
  8. $out .= "Connection: Closer\nr\n";
  9.  
  10. fwrite($fp, $out);
  11. while (!feof($fp)) {
  12. echo fgets($fp, 128);
  13. }
  14. fclose($fp);
  15. }
  16. ?>


A jak bym chciał jeszcze pobrać obrazek.gif?

To jeden z nagłówków by się zmienił:

  1. <?php
  2. $out = "GET /obrazek.gif HTTP/1.1r\n";
  3. ?>


Ale pytanie:
Czy mogę obydwa elementy pobrać bez ponownego łączenia (wywoływania fclose()" title="Zobacz w manualu PHP" target="_manual, i fsockopen()" title="Zobacz w manualu PHP" target="_manual odnowa)

Próbowałem trochę ale... nic nie wyszło, a zależy mi na tym smile.gif

@edit
Forum obcina \ przy \r, proszę o zamianę w Waszym edytorze tekstowym.

Dziękuję, Babcia@Stefa
Kicok
Powinno się dać.

Sprawdź sobie w słowniku co oznacza "Connection: Close" tongue.gif
Jeśli skrypt nadal nie będzie chciał wysłać dwóch żądań, to wklej tu swoje wypociny i poszukamy błędów.
netmare
http://netmare.ovh.org/myurl.zip
masz gotowca tongue.gif, opis lipny ale dojdziesz po kodzie, a i coś tam chyba pogmatwałem przy post przesyłaniu POST dalej niż o jedno location
kiedyś wałkowałem temat do brute'a winksmiley.jpg
Babcia@Stefa
Kod
Connection: Close

Wcześniej wywaliłem ale też nie hulało, chyba że modem chello się zawiesił - jak się zawiesi to nawet localhost nie działa - ale po serwisie się jeszcze odwiesza (wcześniej potrzebny był reset kompa i modemu, sam modem jak się zresetował to nic nie dawało)...

Co do tego słownika to nie rób ze mnie pajaca haha.gif , każdy wie co to znaczy, moim tłumaczeniem znaczy to:
Cytat
Połączenie: Zamknięte


Netmare, to jest dość duża klasa, a więc..? (Moja klasa - piszę własną do obsługi połączeń pomiędzy serwerowych)

@edit
W tej Twojej klasie jest straszny bałagan ^^,
Spróbuj też trochę używać funkcji wbudowanych w PHP jak parse_url()" title="Zobacz w manualu PHP" target="_manual, pathinfo()" title="Zobacz w manualu PHP" target="_manual winksmiley.jpg

@edit
  1. <?php
  2. $fp = fsockopen("boo.pl", 80, $errno, $errstr, 30);
  3. if (!$fp) {
  4. echo "$errstr ($errno)<br />\n";
  5. } else {
  6. $out = "GET /?regulamin HTTP/1.1r\n";
  7. $out .= "Host: localhostr\n";
  8.  
  9. fwrite($fp, $out);
  10. while (!feof($fp)) {
  11. echo fgets($fp, 128);
  12. }
  13.  
  14. $out = "GET / HTTP/1.1r\n";
  15. $out .= "Host: localhostr\n";
  16. $out .= "Connection: Closer\nr\n";
  17.  
  18. fwrite($fp, $out);
  19. while (!feof($fp)) {
  20. echo fgets($fp, 128);
  21. }
  22.  
  23. fclose($fp);
  24. }
  25. ?>


Taki kod testowy, ale zauważyłem że pierwsza pętla wykonuje się w nieskończoność, tak więc?
Może pytać o nagłówek który wskaże wielkość dokumentu i w pętli będzie sumować wielkość każdej linijki, jeśli suma = ten nagłówek. break;

Ale jak tego dokonać? tongue.gif

@edit
To co pisałem jest dosyć trudne jak narazie...

Dziękuję, Babcia@Stefa
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.