Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Utilizzo di fsockopen()

    Ciao a tutti,

    Volevo chiedervi: è possibile usare la funzione fsockopen due volte di fila per la comunicazione server 2 server?

    Ho scritto una porzione di codice che effettua due richieste GET e la prima funziona, mentre la seconda no, anche se le alterno!

    Sapete dirmi se esiste un modo per fare ciò?

    Grazie in anticipo...

  2. #2
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Code?

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  3. #3
    Codice PHP:
    <?php     
    $fp 
    fsockopen("www.atb.bergamo.it"80$errno$errstr30);
         if (!
    $fp) {
             echo 
    "$errstr ($errno)
    \n"
    ;
         } else {
                  
    $out "GET /ITA/Default.aspx?SEZ=2&PAG=38&MOD=LINTRV HTTP/1.1\r\n";
             
    $out .= "Host: [url]www.atb.bergamo.it\r\n[/url]";
             
    $out .= "Cookie: ASP.NET_SessionId=1lovoo55wvdnjy450v412azy; READONLY=MA==; __utma=59162493.1646187204.1354209484.1354209484.1354209484.1; __utmb=59162493.27.10.1354209484; __utmc=59162493; __utmz=59162493.1354209484.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=atb%20orari; HstCfa1041967=1354209484517; HstCla1041967=1354214381995; HstCmu1041967=1354209484517; HstPn1041967=27; HstPt1041967=27; HstCnv1041967=1; HstCns1041967=4; c_ref_1041967=http%3A%2F%2Fwww.google.it%2Furl%3Fsa%3Dt%26rct%3Dj%26q%3Datb%2520orari%26source%3Dweb%26cd%3D1%26sqi%3D2%26ved%3D0CC4QFjAA%26url%3Dhttp%253A%252F%252Fwww.atb.bergamo.it%252FITA%252FDefault.aspx%253FSEZ%253D2%2526PAG%253D38%2526MOD%253DLINTRV%26ei%3DxZi3UNK4AojysgburIGoCg%26usg%3DAFQjCNFKu0Tuffg6uZVhC1akh3TKqesWcQ; __atuvc=27%7C48\r\n";
             
    $out .= "Connection: keep-alive\r\n\r\n";
             
    fwrite($fp$out);
              while (!
    feof($fp)) {
                 echo 
    fgets($fp128);
             } 
             
    $out =  "GET /ITA/Default.aspx?SEZ=2&PAG=38&MOD=LINTRV HTTP/1.1\r\n";         
                    
    $out .= "Host: [url]www.atb.bergamo.it\r\n[/url]";
             
    $out .= "Connection: Close\r\n\r\n";
             
    fwrite($fp$out);
             
    $header ''
            do{
                 
    $header .= fgets($fp128); 
            }while(
    strpos($header"\r\n\r\n") == false);
              list(,
    $sessione) = explode('ASP.NET_SessionId='$header);
             list(
    $sessione) = explode('; path=/; HttpOnly'$sessione);
              die(
    $header."</br></br></br></br>".$sessione);                  fclose($fp);
          } 
    ?>

  4. #4
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Quello che vuoi fare è chiamato una conessione con keep-alive ma lo dovresti negoziare col server. In più leggi dopo la prima richiesta fino alla chiusura della connessione tramite feof, invece dovresti rispettare le indicazioni del server per quanto riguarda il contenuto della risposta.

    Sarebbe molto più facile farlo con due connessioni.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  5. #5
    Il mio obiettivo è quello di prendere il sessionID e il viewstate della pagina, ed infine i cookie!
    I cookie però penso si possano prendere senza problemi perchè sono dentro $_COOKIE, giusto?

    Alla fine voglio fare una richiesta POST che comprende i dati sopra elencati più degli altri!

    Comunque se faccio due richieste mi cambia il sessionID...

    Secondo te come posso fare?

  6. #6
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Non te lo cambia se invii quello che hai ottenuto con la prima richiesta con la seconda.

    Forse meglio usare una libreria già pronta.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  7. #7
    Me ne puoi consigliare qualche d'una per favore?

  8. #8
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  9. #9
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Forse quello su PEAR

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  10. #10
    Ciao,

    il problema di fondo, nel tuo codice, è che, benché richiedi le connessioni keep-alive e probabilmente il server te la fornisce, utilizzi nel codice questa sequenza
    codice:
              while (!feof($fp)) { 
                 echo fgets($fp, 128); 
             }
    feof attende fino alla fine del "file" che nel caso di uno stream è la chiusura dello stesso, probabilmente attendi anche qualche secondo durante l'esecuzione prima di ricevere gli errori.

    Quando si usano le connessioni keepalive devi necessariamente acquisire il content-length e leggere quella porzione di dati o, se il server utilizza un transfer-encoding, decodificare il trasferimento così per come richiesto dal server (generalmente sono trasferimenti a blocchi con la dimensione del blocco scritta subito prima del blocco stesso in esadecimale ... e poi il tutto si chiude con un blocco di dimensione zero)

    Il mio consiglio, per semplificarti la vita, è:
    - passa la connessione a close, così termina subito
    - riapri una nuova connessione con fsockopen, tanto non ti cambia assolutamente nulla
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.