Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    434

    Download multipli con una sola connessione socket

    Ciao a tutti. Ho un problema, cercherò di spiegarlo al meglio.
    Io ho uno script che deve scaricare più di 10 file. Io al momento uso un ciclo for in questo modo:

    codice:
    $host = 'www.sito.com';
    $dir_locale = 'cartella/';
    
    for ($i = 0; $i < 25; $i++) //ovviamente il 25 cambia
      //mi connetto e chiedo il file
      $fp = fsockopen($host, 80);
      fputs ($fp, "GET /cartella/file${i}.html HTTP/1.1\r\nHost: $host\r\nConnection: close\r\n\r\n");
    
      //leggo il file
      $file = '';
      while (!feof($fp))
      {
        $file .= fread($fp, 128);
      }
    
      //scrivo il file
      $fp2 = fopen($dir_locale."file${i}.html", 'w');
      fwrite($fp2, $file);
      fclose($fp2);
    
      //chiudo la connessione
      fclose($fp);
    }
    Ora, il codice funziona bene, scarica i file, il problema è che è molto lento. Non c'è un modo per aprire una sola connessione al server prima del for, fare la richiesta del file, leggerlo, e poi all'iterazione successiva del ciclo rifare la richiesta del file, e poi chiudere la connessione al server solo alla fine?

  2. #2
    Studiati l'RFC del protocollo HTTP, c'è descritto come implementare la cosa.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    434
    dove lo trovo?

    [edit] Ok l'ho trovato..ed è tutto in inglese, e sono 114 pagine, ma credo di aver capito quello che mi serve. Ho trovato informazioni riguardo all'header Keep-Alive a cui non avevo minimamente pensato. Come devo inviarlo? Keep-Alive: True? Keep-Alive: [data di scadenza]?

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.