Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Fsockopen - jedno połączenie, dwa żądania
Babcia@Stefa
post 12.05.2008, 20:03:36
Post #1





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

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


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

Ten post edytował Babcia@Stefa 12.05.2008, 20:07:00


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
Kicok
post 12.05.2008, 21:34:29
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


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.


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
netmare
post 12.05.2008, 21:38:09
Post #3





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


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
Go to the top of the page
+Quote Post
Babcia@Stefa
post 13.05.2008, 15:15:39
Post #4





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

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


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

Ten post edytował Babcia@Stefa 13.05.2008, 17:50:20


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:22