Newsgroup: it.comp.www.php
Titolo: utilizzo consecutivo di un socket creato con fsockopen

Salve a tutti (ad uno in particolare ;) ),
utilizzando la fsockopen mi connetto ad un sito:
$socket = fsockopen('
www.sito.it
', 80, $errno, $errstr);
fputs($socket, $header);
$result = ""; while (!feof($socket)) $result .= fgets($socket, 4096); 
E fin qui tutto a posto. Tutto funziona alla perfezione.
Ma se cerco di mandare una seconda richiesta
fputs($socket, $header);
$result = ""; while (!feof($socket)) $result .= fgets($socket, 4096);
la variabile $result non contiene nulla.
Ogni volta devo chiudere e riaprire il socket quindi? Infatti se
aggiungo tra i due pezzi di codice le seguenti istruzioni
fclose($socket);
$socket = fsockopen('
www.sito.it
', 80, $errno, $errstr);
tutto funziona alla perferzione. 
Ho provato a cercare un po' in giro ma non ho trovato niente di utile.
Chiedo quindi lumi se qualcuno di voi ne sa di più...
Weigand
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 $result = ""; while (!feof($socket)) $result .= fgets($socket, 4096);
Questo fa la stessa cosa di cui sopra, ma a questo punto !feof($socket)
ritorna subito true.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 ritorna subito true.
uhm... comprendo ma... ma il secondo
fputs($socket, $header); 
che eseguo non sortisce nessun effetto sull'feof sul socket?
Devo "resettare" il socket (se si, come?!?) oppure sono costretto a
chiudere
e riaprire il socket stesso.
Weigand
PS Bentornato :)


 che eseguo non sortisce nessun effetto sull'feof sul socket?
Dipende dal server a cui sei collegato, se questo non invia altri dati
al client dopo fputs il comportamento e' corretto.


 e riaprire il socket stesso.
Ciao, credo che sia necessario riaprire la socket dato che la connessione
che tu stai facendo è ad una porta 80 dove molto probabilmente è in ascolto
un web server.
Quest'ultimo ti invia il content della page di default ed il suo lavoro
termina qui. Qualsiasi ulteriore lettura non produce alcun risultato...
... almeno credo
--
Roberto Simoni
www.robertosimoni.it

La connessione HTTP termina quando hai ricevuto la pagina..per questo devi
collegarti di nuovo...
Ciao ;-)

 la variabile $result non contiene nulla.
Vedi Keep-Alive, RFC 2068, RFC 2616.
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

> Vedi Keep-Alive, RFC 2068, RFC 2616.
Ho provato a mandare le seguenti richieste HTTTP
<inizio_HTTP_1>
GET 
http://www.sito.it/pagina_1.php
 HTTP/1.1
User-Agent: myAgent
Host: 
www.sito.it
Connection: Keep-Alive
Cookie: CK1=CKV1; CK2=CKV2; CK3=CKV3;
</inizio_HTTP_1>
<inizio_HTTP_2>
GET 
http://www.sito.it/pagina_2.php
 HTTP/1.1
User-Agent: myAgent
Host: 
www.sito.it
Connection: Keep-Alive
Cookie: CK1=CKV1; CK2=CKV2; CK3=CKV3;
</inizio_HTTP_2>
Ma ancora una volta ugualmente, la prima volta la pagina risponde 
correttamente, mentre la seconda volta non ottengo nulla.
Dovendo fare 8 (i famosi 8) passaggi per quel server devo quindi
*necessariamente* eseguiere 8 fsockopen?
Perchè in questo modo lo script mi dura qualcosa come 170 secondi...
E vorrei drasticamente limitarlo...
Ma non ho idee... Se qualcuno ha sempre qualche suggerimento sono pronto
ad ascoltare... Per il momento continuo a cercare.
Grazie sempre x la puntuale attenzione.
Vincenzo
